2. ボックスモデル
全てのHTML要素は「箱」です。この箱は4つの層で構成されています:
Content(内容) →
Padding(内側余白) →
Border(枠線) →
Margin(外側余白)
🎮 Box Model プレイグラウンド
20px
4px
20px
100px
margin
padding
Content
合計幅: 148px
.box {
box-sizing: content-box;
width: 100px;
padding: 20px;
border: 4px solid purple;
margin: 20px;
}
/* 合計幅 = 100 + 20*2 + 4*2 = 148px */
box-sizing: border-box の重要性
content-box(デフォルト)では、width はコンテンツのみの幅。paddingとborderを足すと合計幅が増えます。
border-box では、width にpadding・borderが含まれるため、計算が直感的になります。
content-box
デフォルト
.box {
width: 100px;
padding: 20px;
border: 4px solid purple;
}
/* 合計幅 = 100 + 40 + 8 = 148px */
/* widthはコンテンツのみ */
border-box
推奨
.box {
box-sizing: border-box;
width: 100px;
padding: 20px;
border: 4px solid purple;
}
/* 合計幅 = 100px(固定)*/
/* widthに全て含まれる */
📌 覚えておきたいポイント
- 全てのリセットCSSでは
box-sizing: border-boxを適用するのが常識 marginは要素の外側、他の要素との間隔paddingは要素の内側、コンテンツとの間隔margin: autoは横方向の中央寄せに使える(Flexboxが登場するまでの古典的手法)- marginは重なる(マージンの相殺)ことがある