页面上每个元素都可以看成一个盒子:内容区、内边距(padding)、边框(border)、外边距(margin)。布局问题十有八九出在盒模型。

margin border padding content
图:标准盒模型各层示意

两种计算方式

默认 content-box:你写的 width 只约束内容区,padding 和 border 会把盒子撑大。

推荐全局使用 border-box:

*, *::before, *::after {
  box-sizing: border-box;
}

这样 width: 300px 包含 padding 与 border,排版更直观。

常见误区

  • 给 100% 宽的元素再加左右 padding,在 content-box 下会溢出父容器。
  • 垂直方向相邻 margin 会合并,不是简单相加。
  • 行内元素的上下 margin 表现与块级不同。
实践:在开发者工具中选中元素,看 Computed 里的盒模型图,对照自己的 CSS 逐项核对。