HandyTools Hub

📏 Px 转 Rem 转换器

px ↔ rem/em 双向转换,基准字体大小可配置。

🔒 100% 客户端处理

常用 px 转 rem 对照表

像素 Rem / Em

把设计稿里的像素值转换成可缩放的 CSS,是前端开发中最重复的工作之一。这个转换器会在你输入时双向换算:输入像素得到 rem,或输入 rem 得到像素,基准字体大小由你控制。工具还会生成一张 1px 到 64px 的对照表,整套间距体系不用打开计算器就能翻译完。

使用方法

  • 设置基准字体大小: 保持 16 使用浏览器默认值,或填写你项目真实的根字号。
  • 编辑任一输入框: 在 px 框输入会更新 rem 框,在 rem 框输入则更新 px。没有转换按钮。
  • 选择 rem 或 em: rem 输入框旁的下拉菜单只改变标签文字,计算使用的是同一个基准。
  • 查看对照表: 1–64px 的表格会按你选定的基准重新生成,方便直接复制。

换算公式

整个工具只依赖一次除法和一次乘法。像素转 rem,除以基准:

rem = px ÷ base

基准为 16px 时,32px ÷ 16 = 2rem,12px ÷ 16 = 0.75rem。反过来则相乘:

px = rem × base

所以 1.5rem × 16 = 24px,0.875rem × 16 = 14px。无论使用 rem 还是 em,转换器应用的都是同样的两种运算,这也是单位下拉菜单不会改变数字的原因。

两个单位的区别在于参照对象,而不是算术。1rem 永远是根字体大小。1em 是当前元素父级的字体大小,所以在一个父级为 20px 的组件里,1em 的内边距会解析为 20px 而非 16px。如果你按 16px 基准把内边距换成 em,而父级其实是 20px,渲染结果就是错的。rem 没有这种歧义。

如何选择基准字体大小

对几乎所有项目来说,16 都是安全的答案,但实践中还会出现另外三种基准:

基准来源1rem 等于说明
16px浏览器默认16px无障碍优先的项目应与之保持一致
10pxhtml { font-size: 62.5% }10px心算方便;请在大字号下测试
20px自定义根规则20px部分设计系统用 20px 正文
18px自定义根规则18px阅读量大的站点常用

无论选哪个,都要在浏览器开发者工具里检查 html 元素的计算字号来确认。猜错基准是产生细微换算偏差的最常见原因。

常见数值速查

像素基准 16 下的 rem基准 10 下的 rem
8px0.50.8
12px0.751.2
16px11.6
18px1.1251.8
20px1.252
24px1.52.4
32px23.2
48px34.8
64px46.4

规律很容易延伸:基准 16 时,每 4px 一步是 0.25rem,所以 28px 是 1.75rem,36px 是 2.25rem。基准 10 时,每 1px 就是 0.1rem。

换算一份真实设计规范

取一个在 Figma 里定义的小卡片组件:20px 内边距、24px 标题、15px 正文、40px 头像、12px 间距。基准为 16px 时,转换器给出内边距 1.25rem、标题 1.5rem、正文 0.9375rem、头像 2.5rem、间距 0.75rem。CSS 读起来很干净:

.card { padding: 1.25rem; gap: 0.75rem; }
.card h2 { font-size: 1.5rem; }
.card p { font-size: 0.9375rem; }
.avatar { width: 2.5rem; height: 2.5rem; }

同样一份规范换成 10px 根字号:内边距变成 2rem,标题 2.4rem,正文 1.5rem,头像 4rem,间距 1.2rem。注意 15px 的正文在基准 16 下是没那么整齐的 0.9375rem——这正是心算容易出错的数值,也是这个工具的用武之地。如果设计师交给你的规范里全是 15px、22px 这样的零散数字,输入一次基准,剩下的交给对照表。

边界情况与精度

  • 小数像素: 15.5px ÷ 16 = 0.96875,保留四位小数。浏览器处理亚像素值没有问题。
  • 极小值: 基准 16 时,1px 是 0.0625rem。这是合法的 CSS,不过 1px 边框通常刻意留在 px 里,以保持真正的细线。
  • 空输入: 清空一个字段会同时清空配对的字段,而不是把空白当作零。
  • 无效基准: 零、负数和非数字输入会显示错误并停止换算。
  • 舍入漂移: 反复往返换算会改变最后一位小数,所以应从源值一次转换,而不是在结果之间连续编辑。

为什么 rem 在可访问性上胜过 px

像素是绝对的。当用户为了更舒适地阅读,把浏览器默认字号调到 20px 时,16px 的标题纹丝不动——仍是 16px,在更大的正文旁边显得更小。rem 会继承这一偏好,所以设为 1.5rem 的标题在 20px 根字号下变成 30px,保持原有的比例关系。WCAG 指南把无法在不损失内容的前提下放大的文字视为缺陷,而 px 排版正是常见的元凶。用 rem 搭建的间距体系也会随文字一起变大,字号放大时边距不会挤成一团。少数细边框和一次性阴影留在 px 里是合理的例外;字体和布局间距应当使用 rem。

相关工具

常见问题

为什么 24px 等于 1.5rem?

rem 表示 root em,所以换算就是把 px 除以根字体大小。浏览器默认根字号为 16px 时,24 ÷ 16 = 1.5,因此是 1.5rem。把基准改成 10,同样的 24px 就变成 2.4rem——这就是为什么每次换算都取决于你设定的基准。

基准字体大小应该填多少?

除非样式表刻意设置了不同的根字号,否则填 16。16px 是 Chrome、Firefox、Edge 和 Safari 的默认值,几乎所有设计系统都基于它绘制。如果 CSS 里有 html { font-size: 62.5% },就改填 10,因为那条规则让 1rem 等于 10px。

em 选项的计算方式和 rem 有什么不同?

算术完全相同——两者都是除以或乘以你提供的基准,下拉菜单只是给输出换个标签。对于父级字号等于基准的元素,这是准确的;但当父级有自己的字号时,em 就与 rem 真正不同了,因为 em 相对于父级,而 rem 永远相对于根元素。

换算结果有多精确?

结果最多保留四位小数并去掉末尾的零,所以 16px 基准下 18px 显示为 1.125,12px 显示为 0.75。这远超 CSS 所需的精度,因为浏览器在布局时会自行处理亚像素值。

为什么有些团队把根字号设成 62.5%?

这个简写会让 html { font-size: 10px },因为 16px 默认值的 62.5% 正好是 10。它让心算更轻松——24px 的设计值一眼就是 2.4rem。代价是它会覆盖用户的根字号,除非你把这条规则本身也用 rem 来表达,所以在可访问性上需要谨慎。

如果基准填 0 或负数会怎样?

工具会拒绝该值并显示行内错误,因为除以零没有定义,负的根字号也没有意义。修正基准字段后,换算和对照表会立即恢复。

由 HandyTools Hub 团队审校 · 最后更新