box-sizingプロパティの説明
CSSのbox-sizingプロパティは、要素の幅や高さを計算する祭に余白や境界線の範囲をどのように扱うべきかを指定します。これによりwidthやheightで表されるサイズが、borderやpaddingの範囲を含めるか否かを定義します。
HTMLの各要素は、CSSのボックス・モデルに基づいて四角形の箱としてレイアウトされます。この箱は4つの仮想区域を持っており、それぞれコンテンツ(内容)、パディング(内側の余白)、ボーダー(境界線)、マージン(外側の余白)に分類できます。
要素全体の幅や高さを決定するには、どの領域を含めるか除外するかを定義しておかなければなりません。box-sizingは、この振る舞いを制御するためのプロパティです。
box-sizingに指定できる値
box-sizingの使い方とサンプルコード
box-sizingプロパティの構文は以下の通りです。
/* キーワード値 */
box-sizing: border-box;
box-sizing: content-box;
/* グローバル値 */
box-sizing: inherit;
box-sizing: initial;
box-sizing: revert;
box-sizing: unset;
box-sizingの実例
それでは実際にbox-sizingプロパティの書き方を見ていきましょう。まず初めに、このプロパティが登場してから頻繁に使われるようになったCSSリセットの一部を紹介します。
*, *::before, *::after {
box-sizing: border-box;
}
このように記述すると、全ての要素と擬似要素のサイズ計算がborder-boxを基準に行われます。既定値であるcontent-boxのルール下でマークアップを行う場合、レイアウトの計算が非常に面倒でした。widthやheightは、あくまでコンテンツを表示する範囲を示すので、borderやpaddingを指定された要素は、個別にケアする必用があったからです。
続いて、同じ装飾を施した要素を用意してbox-sizingの値を変えた場合の挙動を確認します。以下の例は、同じ幅の境界線と余白を持つ<div>にborder-boxとcontent-boxを与えた場合の比較です。
