CSS Box Sizing
- 前のページ CSS @property
- 次のページ CSS Flexbox
CSS Box Sizing
CSS box-sizing
属性が要素の合計幅と高さに内側パディング(充填)とボーダーを含めることを許可します。
CSS box-sizing 属性を指定しない場合
デフォルトでは、要素の幅と高さは以下のように計算されます:
- width + padding + border = 元素の実際の幅
- height + padding + border = 元素の実際の高さ
これは意味します:要素の幅/高さを設定する場合、要素は通常設定したよりも大きく見えます(なぜなら要素のボーダーや内側パディングが指定された幅/高さに追加されているからです)。
次の図は、同じ指定された幅と高さを持つ2つの <div> 要素を示しています:
(幅300px、高さ100px)。
(幅も300px、高さも100pxです)。
上の2つの <div> 要素は最終的な結果で異なるサイズを呈示します(なぜなら div2 は内側パディングを指定しているからです):
インスタンス
.div1 { width: 300px; height: 100px; border: 1px solid blue; } .div2 { width: 300px; height: 100px; padding: 50px; border: 1px solid red; }
box-sizing
属性がこの問題を解決します。
CSS box-sizing 属性を使用すると
box-sizing
属性が設定されている場合、要素の合計幅と高さに内側パディングとボーダーを含めることができます。
要素に box-sizing: border-box;
、その場合、幅と高さは内側パディングとボーダーを含みます:
この例は前の例と同じで、2つの <div> 要素はすべて box-sizing: border-box;
:
インスタンス
.div1 { width: 300px; height: 100px; border: 1px solid blue; box-sizing: border-box; } .div2 { width: 300px; height: 100px; padding: 50px; border: 1px solid red; box-sizing: border-box; }
使用 box-sizing: border-box;
の効果が非常に良いため、多くの開発者がページ上のすべての要素がこの方法で動作するように望んでいます。
以下のコードは、このより直感的な方法ですべての要素のサイズを調整するように確実にします。多くのブラウザは、多くのフォーム要素に対してこの効果を実現しています box-sizing: border-box;
(ただし、すべてではありません - これが input と textarea が width: 100%; で見え方が異なる理由です)。
すべての要素に適用することは安全で賢明です:
インスタンス
* { box-sizing: border-box; }
CSS Box Sizing 属性
属性 | 説明 |
---|---|
box-sizing | 要素の幅と高さの計算方法を定義します:内余白(padding)とボーダーを含めるべきかどうかです。 |
- 前のページ CSS @property
- 次のページ CSS Flexbox