以墨会友 · 以文载道

CSS 中容易忽略的几个细节

2026/5/15 · 编程

1. line-height 最好用无单位值

css
/* 推荐 */
body {
  line-height: 1.6;
}

/* 不推荐 */
body {
  line-height: 1.6em; /* 会被子元素继承计算后的值 */
}

无单位的 line-height 会在每个子元素上基于自己的 font-size 重新计算,而不是继承父元素的计算结果。

2. vertical-align 只对 inline 和 table-cell 元素生效

很多人以为 vertical-align: middle 能让 div 里的内容垂直居中,实际上它只对 inlineinline-blocktable-cell 元素有效。块级元素垂直居中还是得用 flexbox。

3. z-index 不是谁都能用

z-index 只对 position 不是 static 的元素,或者设置了 opacity(小于 1)、transformfilter 等属性的元素生效。

4. margin 折叠

相邻块级元素的上下 margin 会发生折叠,取较大的值。解决方案:

  • 父元素设置 overflow: hidden
  • 使用 padding 代替 margin
  • 使用 Flexbox/Grid 布局(不会发生折叠)

5. 100vw 包含滚动条

100vw 是视口宽度,包含了滚动条的宽度。如果你的页面有垂直滚动条,width: 100vw 会导致水平滚动条出现。用 100% 更安全。


这些都是踩过坑才知道的细节,写 CSS 的时候多留意能省不少调试时间。