CSS 单位转换器

即时在 CSS 单位 px、rem、em、vw 之间互转。可配置根字体大小和视口宽度,在浏览器中处理,免费在线工具。

  • 在浏览器中处理
  • 数据不离开你的设备
  • 免费 · 无需注册
单位菜单决定源单位,四项结果即时更新。本工具将 em 按 rem 处理,统一使用根字体大小,不会读取真实网页或元素继承的字号。
点击清除,或在工具内按 Ctrl/⌘+L,会清空数值、全部结果和状态。单位、根字体大小和视口宽度保持当前设置。
设置
展开设置,填入项目的根字体大小,单位为像素,默认 16px。rem 和 em 都使用此值;输入为空或为零时按 16px 计算,填负数时报错。
填写目标视口的像素宽度,默认 1920px;390px 的手机布局可填 390。1vw 等于此宽度的百分之一。输入为空或为零时按 1920px 计算,填负数时报错。
只输入数字,不附单位,例如 16 或 2.5。结果随输入更新,也支持负数和零。请在单位菜单选择 px、rem、em 或 vw。
结果 结果包含单位,保留六位有效数字。点击结果旁的复制,会复制该数值和单位。高亮行表示源单位。
示例、说明与常见问题 带实际输出的示例、与同类工具的差别,以及常见问题。

常用转换参考

默认设置(根字体大小 16px,视口 1920px):

  • 16px = 1rem = 1em = 0.833333vw
  • 1rem = 16px
  • 100vw = 1920px = 120rem

各单位使用场景

  • px — CSS 像素,不等于屏幕的物理像素:在 2 倍屏上,一个 CSS 像素占 2×2 个物理像素,页面缩放时也会跟着变大。它不跟随浏览器的字号设置。适合边框、阴影等细节。
  • rem — 只要根字号没有用 px 写死,就会随用户在浏览器里设置的字号缩放。无障碍设计中字体和间距的首选。
  • em — 相对于元素自身的字体大小(用在 font-size 上时相对于父元素)。适合组件内部的相对尺寸。
  • vw — 相对于视口宽度。适合流体排版和全宽布局。

换算公式

根字体大小 16px、视口宽度 1920px(默认值)时:

rem = px ÷ root font size          24px ÷ 16 = 1.5rem
px  = rem × root font size         1.5rem × 16 = 24px
vw  = px ÷ viewport width × 100    24px ÷ 1920 × 100 = 1.25vw
px  = vw × viewport width ÷ 100    1.25vw × 1920 ÷ 100 = 24px

示例:用了 lib-flexible 的移动端页面

国内不少移动端项目用过阿里巴巴 amfe 团队的 lib-flexible。2.x 版本(npm 包 amfe-flexible)的脚本把根字号设为屏幕宽度的十分之一(源码注释写的是 set 1rem = viewWidth / 10),所以在 375px 宽的手机上,根字号是 37.5px。展开“设置”,根字体大小填 37.5,视口宽度填 375,再输入 24 并选 px:

结果是 0.64rem 和 6.4vw。两个数正好差十倍,因为在这种页面里 1rem 就是 10vw。反过来输入 1 并选 rem:

得到 37.5px 和 10vw。根字体大小和视口宽度都可以填 37.5 这样的小数。

lib-flexible 的 README 已经写明这个过渡方案可以放弃,建议改用 viewport 单位。迁移时可以拿这个工具对照:根字号与视口宽度按上面填好,单位选 rem,输入旧的 rem 值,就能直接读出对应的 vw。

em 为什么容易出乎意料

本工具把 em 当作 rem 处理,都相对于根字体大小。但在真实页面里,font-size 中的 em 相对于父元素的字体大小,嵌套时会层层相乘(MDN):

html  { font-size: 16px; }
.card { font-size: 1.25em; }   /* 20px */
.card .title { font-size: 1.25em; }   /* 25px: 1.25 × 20px */
.card .title small { font-size: 1.25em; }   /* 31.25px */

换成 rem,每一层都是 20px。随文字大小变化的尺寸(如按钮内边距)用 em,字号和布局间距用 rem。

限制

  • em 按 rem 换算。 只有元素字号等于根字号时结果才准确。
  • 只支持四种单位: px、rem、em、vw,不换算 vh、%、pt、ch。
  • vw 按你填的宽度计算。 默认的 1920px 是桌面宽度,请填目标宽度(如手机填 375 或 390)再看 vw 值。
  • 结果保留 6 位有效数字,例如 1920px 下 16px 是 0.833333vw。
  • vw 包含滚动条。 桌面浏览器显示常规滚动条时,100vw 是含竖向滚动条的窗口宽度,可能比内容区宽,从而出现横向滚动条。
  • 数值框只接受数字。 带单位输入 16px 不会被识别,请在单位菜单里选择单位。根字体大小或视口宽度留空、填 0 时,分别按 16px 和 1920px 计算;填负数时状态栏报错,结果清空。

FAQ

支持哪些 CSS 单位?

px、rem、em 和 vw。输入任意单位的值,四种单位的结果同时显示。

rem 是如何计算的?

rem(根 em)相对于根元素的字体大小。默认 16px,即 1rem = 16px。可在“设置”中修改根字体大小。

vw 是如何计算的?

vw 是视口宽度的 1%。视口宽 1920px 时,1vw = 19.2px。按目标布局改视口宽度即可。

rem 和 em 有什么区别?

rem 始终相对于文档根字体大小;em 相对于当前元素的字体大小,在嵌套结构中会变化。本工具采用简化模型:em = rem(均相对于根字体大小)。

数据会发送到服务器吗?

不会。换算在浏览器标签页里完成,你输入的数值不会发送到服务器,也不会保存在浏览器存储里。页面统计只记录使用事件(工具名和动作:换算、复制),不包含数值。