元素总宽高由盒模型决定,包括 content、padding、border、margin;标准模型(content-box)下总宽 =width+padding+border+margin,替代模型(border-box)下 width 包含 content、padding 和 border,更利于布局控制。

在 css 中,元素的总宽度和高度并不是简单等于设置的 width 和height,而是由 CSS 盒模型 决定的。盒模型包括四个部分:内容(content)、内边距 (padding)、边框(border)和 外边距(margin)。其中影响元素占据空间宽高的主要是前三个。
盒模型组成结构
一个元素的实际占用空间计算如下:
- 内容区(content):设置的 width / height
- 内边距(padding):内容到边框的距离,四边可分别设置
- 边框(border):围绕内容和内边距的边线
- 外边距(margin):元素与其他元素之间的间距,不计入元素自身宽高
标准盒模型下的宽度计算公式
在默认的 标准盒模型(box-sizing: content-box)下,元素的总宽度为:
总宽度 = width + 左右 padding + 左右 border + 左右 margin
总高度 = height + 上下 padding + 上下 border + 上下 margin
示例:
假设一个 div 设置如下:
div {width: 200px; height: 100px; padding: 10px; border: 5px solid #000; margin: 20px;}
那么它的实际占用空间为:
立即学习 “ 前端免费学习笔记(深入)”;
- 总宽度 = 200 + (10×2) + (5×2) + (20×2) = 200 + 20 + 10 + 40 = 270px
- 总高度 = 100 + (10×2) + (5×2) + (20×2) = 100 + 20 + 10 + 40 = 170px
替代盒模型:box-sizing: border-box
使用 box-sizing: border-box 可以改变盒模型行为,此时设置的 width 和height包含了内容、padding 和 border。
总宽度 = 设置的 width + 左右 margin
总高度 = 设置的 height + 上下 margin
示例:
同样的样式,但加上box-sizing: border-box:
div {box-sizing: border-box; width: 200px; height: 100px; padding: 10px; border: 5px solid #000; margin: 20px;}
此时:
- 内容区宽度 = 200 – (10×2) – (5×2) = 170px
- 总宽度 = 200 + (20×2) = 240px(比标准模型小)
- 总高度 = 100 + (20×2) = 140px
这种模式更符合直觉,常用于布局,避免因加 padding 或 border 导致超出容器。
基本上就这些。理解盒模型是掌握页面布局的基础,关键是分清 content-box 和border-box的 区别 ,并合理使用box-sizing 控制计算方式。


