设计稿标注 24px,代码库全用 rem——这个场景你一定遇到过。打开计算器,除以 16,写进代码,一小时后再来一遍。这种低价值重复劳动不应该占用开发者的时间。

CSS 单位速览

理解各单位的本质,才能做出正确的技术选型。

px — 绝对像素

最直观的单位,font-size: 16px 就是 16 个 CSS 像素。注意:CSS 像素不等于物理像素——在 Retina 屏幕上,1 个 CSS 像素对应 2 个(或更多)物理像素。

适用场景:边框(border: 1px solid)、阴影、不应随用户字体设置缩放的元素。

rem — 根元素 em

1rem 等于根元素 <html> 的字体大小,默认 16px。用户在浏览器里调大字体,基于 rem 的布局会等比缩放,天然支持无障碍访问。

html { font-size: 16px; }   /* 默认基准 */
h1   { font-size: 2rem; }   /* = 32px */
p    { font-size: 1rem; }   /* = 16px */

适用场景:字体大小、间距、布局尺寸——所有需要跟随用户字体偏好的属性。

em — 父元素 em

1em 等于当前元素父级的字体大小。嵌套会叠加:父级 1.5em,子级再 1.5em,实际变成 2.25rem。这个特性用好了灵活,用错了难以排查。

.card          { font-size: 1.25em; }   /* 父级 16px → 20px */
.card .caption { font-size: 0.8em;  }   /* 0.8 × 20 = 16px */

适用场景:组件内部间距(如按钮 padding),需要随组件字体大小联动缩放时。

vw / vh — 视口单位

1vw = 视口宽度的 1%,1vh = 视口高度的 1%。适合全屏布局、流体排版。

.hero     { height: 100vh; }
.headline { font-size: 5vw; }

注意:iOS Safari 的动态工具栏会导致 100vh 行为异常。移动端推荐使用 dvh(动态视口高度)。

单位换算公式

px → rem

rem = px ÷ 根字体大小

默认基准 16px 的换算表:

pxrem
80.5
120.75
161
241.5
322
483

rem → px

px = rem × 根字体大小

px → vw

vw = (px ÷ 视口宽度) × 100

以 1440px 设计稿为例,240px 元素 = 240 ÷ 1440 × 100 = 16.67vw

在线 CSS 单位转换器

使用 ZeroTool CSS 单位转换器 →

输入任意单位的值(px、rem、em、vw、vh、pt、cm、mm),立即获得所有其他单位的等价值。可自定义根字体大小和视口尺寸,适配你的实际项目。

所有计算在浏览器本地完成,不上传数据。

实战场景

设计稿交付

Figma 默认使用 px 标注,你的设计系统用 rem token。用转换器批量换算整个间距系统,而不是一个个手算。

无障碍审查

把浏览器字体大小调到 20px,检查哪些元素没有自适应——用 px 硬编码的尺寸会”原地不动”,那就是你的改造清单。

clamp() 响应式排版

font-size: clamp(1rem, 2.5vw, 2rem);

想在 800px 视口下字体正好是 20px?计算 20 ÷ 800 × 100 = 2.5vw。转换器秒出结果。

rem vs em 选型速查

场景单位
正文字体rem
标题rem
按钮 padding(跟按钮字体联动)em
全局间距系统rem
媒体查询断点em(兼容浏览器缩放)

媒体查询用 em 有个微妙原因:它响应浏览器基础字体大小,而不是 <html> 的 font-size,这在用户使用浏览器缩放时有区别。

用 CSS 变量构建可扩展间距系统

最佳实践是用 CSS 变量定义基于 rem 的间距系统:

:root {
  --space-1: 0.25rem;   /* 4px */
  --space-2: 0.5rem;    /* 8px */
  --space-4: 1rem;      /* 16px */
  --space-6: 1.5rem;    /* 24px */
  --space-8: 2rem;      /* 32px */
}

只需修改 html { font-size },整套间距系统等比缩放。CSS 单位转换器帮你把设计稿的 px 值快速转换为 rem token。

小结

  • rem:字体和全局间距,尊重用户无障碍设置
  • em:组件内间距,与组件字体联动缩放
  • vw/vh:视口相对布局和流体排版
  • px:边框、阴影等不需要缩放的细节

在线换算 CSS 单位,px/rem/em/vw 即时互转 →