CSS 单位怎么选:PX、REM、VW、VH 与 calc() 实战

趁手 · 更新于

CSS 长度单位没有统一的“最佳选择”。固定边框适合 px,随根字号缩放的间距适合 rem,随视口变化的布局可用 vw、vh,混合约束则适合 calc()。关键是先明确参照物,再换算。

先看一个响应式卡片实例

.card {
  width: min(92vw, 40rem);
  padding: 1.5rem;
  min-height: calc(100vh - 8rem);
  border: 1px solid #d8d8d8;
}

假设根字号是 16px、视口为 1440×900:40rem = 640px,92vw = 1324.8px,所以宽度取 640px;1.5rem = 24px;calc(100vh - 8rem) = 900px - 128px = 772px。

PX、REM 和 EM 的参照物

百分比、VW、VH、vmin 和 vmax

百分比的参照物取决于具体属性,不能脱离属性直接断言。例如宽度百分比通常基于包含块宽度。1vw 等于视口宽度的 1%,1vh 等于视口高度的 1%;1vmin 取视口宽高中较小值的 1%,1vmax 取较大值的 1%。

移动端浏览器的地址栏会改变可见区域。需要贴合动态视口时,可进一步评估 dvh、svh 和 lvh,并在目标浏览器上测试。

calc() 如何计算混合单位

calc() 可以组合兼容的长度值。例如 calc(100vw - 2rem) 在 1440px 宽、根字号 16px 时为 1440 - 32 = 1408px。加减号两侧应保留空格;乘除法和较新的数学函数需要结合目标浏览器支持情况。

常见误区和限制

可靠参考

打开 CSS 单位换算与 calc() 工具

继续阅读