2016-10-10 2 views
0
私はアカウント headerのマージンを考慮して header realtive conatinerに幅の幅を設定したい

の存在と親に子供の幅の相対を設定しは余裕

div.container { 
 
    width: 100%; 
 
    height: 300px; 
 
    border: 1px solid red; 
 
    position:relative; 
 
} 
 
    
 
header{ 
 
    width: 100%; 
 
    border: 1px solid green; 
 
    height: 20px; 
 
    margin: 10px; 
 
}
<div class="container"> 
 
    <header></header> 
 
</div>

けどheader要素は、右側の数ピクセルでコンテナの境界から出てきます。
box-sizing: border-box;headerさんのスタイルを追加してみて、何も起こりません。どうして?

答えて

0

width: calc(100% - 22px);headerに設定します。これは、境界の2倍(2 * 1px)から2倍のマージン(2 * 10px)を差し引いたもので、最大22pxになります。

div.container { 
 
    width: 100%; 
 
    height: 300px; 
 
    border: 1px solid red; 
 
    position:relative; 
 
} 
 
    
 
header{ 
 
    width: calc(100% - 22px); 
 
    border: 1px solid green; 
 
    height: 20px; 
 
    margin: 10px; 
 
}
<div class="container"> 
 
    <header></header> 
 
</div>

+0

はなぜボックスサイジングは、この場合には動作しませんか? – maks

+0

は、ボックスサイズ設定(border-box、content-box、padding-box)で使用可能な設定のいずれも考慮していないため、余白は要素の外にあります。 – Johannes

+0

幅を計算するよりエレガントな方法はありますか?後でマージンを変更したり、パディングを追加したい場合はどうすればよいですか?私は 'calc'関数も変更する必要があります。 – maks

0

私は、子のdivにマージンを使用するのではなく、sugest - 親のdivにを使用しています。あなたのコードスニペットを更新しました。

div.container { 
 
    width: 100%; 
 
    height: 300px; 
 
    border: 1px solid red; 
 
    position:relative; 
 
    padding:10px; 
 
} 
 
    
 
header{ 
 
    width: 100%; 
 
    border: 1px solid green; 
 
    height: 20px; 
 
}
<div class="container"> 
 
    <header></header> 
 
</div>

+0

この場合、ボックスサイズが機能しないのはなぜですか? – maks

関連する問題