Box-model介紹
CSS 的 Box Model 是描述 HTML 元素在網頁佈局中如何被渲染的模型。每個 HTML 元素(例如 <div>
、<p>
、<img>
)都可以被視為一個「矩形盒子」,這個盒子由以下幾個部分組成,從內到外分別是:
-
Content(內容):元素的實際內容,例如文字、圖片等,寬高由 width 和 height 屬性控制。
-
Padding(內邊距):內容與邊框之間的空間,會增加元素的內部空間。
-
Border(邊框):包圍在內邊距外圍的框線,可以設定粗細、樣式和顏色。
-
Margin(外邊距):邊框外圍的空間,用來控制元素與其他元素之間的距離。
這四個部分共同決定了一個元素在頁面上的總尺寸和位置。
Box Model 的運作方式
當你設定一個元素的 width 和 height 時,實際上只設定了 Content 的尺寸。如果有 Padding、Border 或 Margin,這些部分會額外增加元素的總寬高。
標準 Box Model(預設)
在標準 Box Model 中,元素的總寬度和總高度計算方式如下:
-
總寬度 = width + padding-left + padding-right + border-left + border-right + margin-left + margin-right
-
總高度 = height + padding-top + padding-bottom + border-top + border-bottom + margin-top + margin-bottom
替代 Box Model(box-sizing: border-box)
CSS 提供了一個屬性 box-sizing,可以改變 Box Model 的計算方式。如果設定 box-sizing: border-box,則 width 和 height 會包含 Content、Padding 和 Border,但不包含 Margin。這種方式在佈局時更直觀,常被前端工程師使用。
-
總寬度 = width(包含 Content + Padding + Border) + margin-left + margin-right
-
總高度 = height(包含 Content + Padding + Border) + margin-top + margin-bottom
Image by LeoPantero (planflow.dev)