使用方法
- 「数值」默认填 1.25,允许 0 到 100000,支持小数;「源单位」默认 em,「目标单位」默认像素。改任意一项立刻重算,光标停在数值框里按回车同样触发一次换算。
- 两个单位下拉各有八个选项:像素、磅、派卡、em、rem、英寸、厘米、毫米。前三者与 em/rem 都属于「按当前字号折算」的一类,后三者是绝对单位,取值不随字号变化。
- 「根字号基准」默认 16,范围 4 到 72,单位是像素。它就是浏览器默认字号,em 与 rem 都按它折算;把这一项改成别的值,等于设想用户把浏览器字号调大或调小之后的情形。
- 「级联嵌套层数」默认 3,范围 1 到 6。它生成一个演示链:同一数值在第 n 层等于基准乘以数值的 n 次方,而同样写法的 rem 在任何一层都恒为基准乘以数值一次。
- 「小数位」默认 12,范围 0 到 12。它决定结果最多保留几位小数;当结果本身需要的位数比设定值更多时,会保留必要位数而不是硬截断。
- 「批量换算」默认已经写好五行示例,每行一条「数值 + 空格 + 单位」。按 Ctrl+Enter(Mac 上 Cmd+Enter)一次算完;万一被清空,点换算时会自动填回这五行。
- 结果区给出「原值 源单位 = 结果 目标单位」这一行,下面跟着基准字号、单位汇率、级联演示链,以及同一数值展开到八个单位的清单。
- 清单下面是一张 12 行的倍率表,把当前数值乘以 0.25 到 1024 逐个换算,默认显示 6 行,点「加载更多」展开全部,点「导出 CSV」存成带字节序标记的表格文件。数值为负、超过上限、不是数字,或批量行写成「1.25em」这类识别不了的形式,都会给出针对该条的具体提示。
这个 em 转像素换算器能解决什么问题
设计稿标注的是像素,而实现里为了跟随用户字号往往写成 em。要把 18px 的副标题写成 em,需要知道当前上下文的字号是多少——在根字号为 16px 的页面里是 1.125em,但如果这段被放进一个 1.25em 的容器,实际要写的值就完全不同了。这类换算在手写时不报错,只是字号悄悄走样。
第二类是级联事故。组件开发里常见「外层写了 font-size,内层再写 font-size」的两层写法,两处都用 em 就会相乘,第三层之后与预期偏离到肉眼可见。查这类问题时要能回答「二层之后到底是多少像素」,而不是靠反复刷新控制台。
第三类是相对单位的选择判断。想知道某个组件该用 em 还是 rem,前提是先量化差别:em 会因为嵌套层数不同给出不同像素值,rem 在任何深度都返回同一个值,后者才能被当作稳定的布局栅格。
第四类是跨媒体排版。打印样式表与 LaTeX 文档用磅、派卡、英寸、厘米、毫米,屏幕样式表用像素。像素与英寸之间的 96 比 1 是 CSS 规定的固定换算,与设备实际 dpi 无关,这一点把 CSS 单位与物理英寸区分开。
本站这一页的标题「em转像素」说的就是把相对单位的写法折算成像素读数;真正在项目里落地时,如果这个值会被嵌套继承,通常应该改用 rem。
计算原理与变量说明
本页换算只有两步:先把输入值折成像素,再从像素折到目标单位。每个单位配一个「相当于多少像素」的因子 F:像素是 1、磅是 1.33333333333、派卡是 16、em 是基准字号、rem 是基准字号、英寸是 96、厘米是 37.7952755906、毫米是 3.77952755906。
第一步折像素:像素数 = x × F[源单位]。输入 1.25em,像素数 = 1.25 × 16 = 20px。第二步折目标:结果 = 像素数 ÷ F[目标单位],接上例换成磅得 20 ÷ 1.33333333333 = 15pt。两步合成一行就是 结果 = x × F[源] ÷ F[目标]。
变量有四个:数值 x、源单位、目标单位、基准字号 B。其中 B 只影响 em 与 rem 两个单位的因子,默认值 16 是主流浏览器的默认根字号。绝对单位的因子与 B 无关。
em 与 rem 的唯一差别是参照对象。em 参照当前元素继承到的字号,rem 参照根元素 html 的字号。写成公式:第 n 层某个 em 值 v 对应的像素 = B × vⁿ;同样写法换成 rem,任何一层都恒为 B × v。所以 em 是乘法链,rem 是一次乘法。
级联演示链怎么读。基准 16px、数值 1.25:第一层 16 × 1.25 = 20px;第二层 16 × 1.25² = 25px;第三层 16 × 1.25³ = 31.25px。而 1.25rem 在任意层都保持 20px。第三层 em 与 rem 的比值是 31.25 ÷ 20 = 1.5625,正好等于 1.25 的平方,也就是两层乘出来的累积。
缩小方向同样会累积。父级 0.8em、子元素再 0.8em,子元素的实际字号是 16 × 0.8² = 10.24px,而不是 12.8px 再乘一次印象中的近似值。多层缩小比多层放大更容易把文字推到不可读,这也是列表与侧栏样式常见的事故源。
绝对单位的锚点。CSS 规定 1 英寸 = 96 像素 = 72 磅 = 6 派卡,由此 1 磅 = 1.33333333333 像素、1 像素 = 0.75 磅、1 派卡 = 16 像素 = 12 磅 = 0.166666666667 英寸;1 厘米 = 37.7952755906 像素,1 毫米 = 3.77952755906 像素。
完整示例(数值仅作演示)
默认示例是 1.25em 换成像素。像素数 = 1.25 × 16 = 20px。同一个 1.25em 展开到八个单位:20 px、15 pt、1.25 pc、1.25 em、1.25 rem、0.208333333333 in、0.529166666667 cm、5.29166666667 mm。其中 pc 与 em 恰好同值,是因为 1 派卡定义就是 16 像素、而 em 在基准 16px 下也等于 16 像素。
级联演示链:第 1 层 20px、第 2 层 25px、第 3 层 31.25px,同时每一步都列出 1.25rem 恒等于 20px 的对照。把嵌套层数改成 1,两条线重合;改成 4,第 4 层 em 变成 39.0625px,而 rem 仍是 20px。
把根字号基准改成 20:1.25em 在第 1 层等于 25px,第 3 层等于 48.828125px。这说明 em 的像素值依赖整条继承链,同一个写法在不同根字号的项目里不能直接复制。
批量框默认五行,目标单位像素:1 em 得 16;1.25 em 得 20;1.5 em 得 24;2 em 得 32;0.8 em 得 12.8。五行结果与换算表逐行对应,可以拿来核对倍数关系。
em 与像素对照表
下表是 em 到像素的常用档位,全部按基准 16px 折算。
| em | 像素 | em | 像素 |
|---|---|---|---|
| 0.5 | 8 | 1.5 | 24 |
| 0.75 | 12 | 2 | 32 |
| 1 | 16 | 3 | 48 |
| 1.125 | 18 | 4 | 64 |
| 1.25 | 20 | — | — |
下面这张是 em 与 rem 的级联对照,左侧为嵌套层数,中间是同一 em 写法的实际像素,右侧是改成 rem 后的像素,两者之比随层数指数增长。
| 嵌套层数 | 写 1.25em | 写 1.25rem | em ÷ rem |
|---|---|---|---|
| 1 | 20 | 20 | 1 |
| 2 | 25 | 20 | 1.25 |
| 3 | 31.25 | 20 | 1.5625 |
| 放小方向父 0.8em、子 0.8em | 10.24 | 12.8 | 0.8 |
最后是绝对单位锚点表,把 2em 与 1 派卡在各单位下的取值并列。
| 取值 | 像素 | 磅 | 英寸 |
|---|---|---|---|
| 2 em | 32 | 24 | 0.333333333333 |
| 1 pc(派卡) | 16 | 12 | 0.166666666667 |
| 1 em | 16 | 12 | 0.166666666667 |
| 1 in(英寸) | 96 | 72 | 1 |
| 1 cm(厘米) | 37.7952755906 | 28.3464566929 | 0.393700787402 |
读这三张表的方法:第一张找常用档位,第二张判断该不该换 rem,第三张做跨媒体换算。第三张里 1em 与 1pc 同值只是基准 16px 下的巧合,改了根字号就不再成立。
结果边界、舍入与适用说明
- 数值框为空时提示「数值不能为空,请填 0 到 100000 之间的数字」,不会拿上一次的结果冒充本次输出。
- 数值里带单位符号时提示该串不是有效数字,请只填数字,单位在下拉里选。
- 数值为负数时提示字号没有负值,请填 0 或更大的数,既不返回负数也不取绝对值。
- 数值超过 100000 时提示超出上限,请改小或换成更大的单位。
- 根字号基准不在 4 到 72 之间时提示超出常见浏览器字号区间,并说明主流取值是 16。
- 嵌套层数不在 1 到 6 之间时提示层数范围,超出六层的嵌套在真实样式表里已不具备可读性。
- 批量行缺少单位、数值不是数字、或单位不在八种之内时,分别给出行号与具体原因。
- 结果先按 12 位有效数字收敛,再按小数位显示;末尾的零会被去掉,20.000000000000 显示成 20。
- 本页不模拟浏览器的最小字号限制与字号调整策略,也不处理媒体查询、clamp() 与 calc() 里的动态字号。
常见问题
1em 到底等于多少像素?
等于当前上下文继承到的字号。在根字号 16px 的普通文本流里是 16px;若父元素写了 font-size: 1.25em,则子元素里的 1em 等于 20px。所以这个问题必须先问「在那一层」。
为什么我写了 1.25em,字号变成 25px 而不是 20px?
因为你所在的层之前还有一层 em。父级 1.25em 得到 20px,子元素再写 1.25em 是 20 × 1.25 = 25px,即 16 × 1.25²。要得到稳定的 20px,应写成 1.25rem。
三层嵌套的 em 与 rem 相差多少?
基准 16px、每层 1.25em:第三层为 16 × 1.25³ = 31.25px,而 1.25rem 恒为 20px,比值 1.5625。这个比值就是 1.25 的平方,等于前两层的累积。
什么时候该用 em,什么时候该用 rem?
希望随外围文字一起缩放的部分(行高、内边距、图标字号)用 em;希望在整个站点保持一致的栅格、容器宽度与基准字号用 rem。两者混用的边界应当写在组件约定里,而不是临时决定。
磅与派卡和像素怎么换算?
1 英寸 = 96 像素 = 72 磅 = 6 派卡,所以 1 磅 = 1.33333333333 像素(反过来 1 像素 = 0.75 磅),1 派卡 = 16 像素 = 12 磅 = 0.166666666667 英寸。
CSS 里的 1 英寸等于物理世界的 1 英寸吗?
不等于。CSS 把英寸固定定义为 96 像素,与设备实际分辨率无关;由此 1 厘米 = 37.7952755906 像素,1 毫米 = 3.77952755906 像素。打印时才会再由输出设备把像素映射到物理长度。
这个工具免费吗?
免费,无需注册即可使用。
输入的数据安全吗?
安全。计算在当前浏览器本地完成,不会上传输入内容。
相关工具
- 像素转 rem 转换器:把设计稿像素直接折成 rem 写法,配合本页判断该不该改用 rem。
- rem 转像素转换器:反向核对,确认某个 rem 值在当前根字号下到底是多少像素。
- em 转英寸:走绝对单位锚点,印刷与打印样式表里常用。
- em 转厘米:同样是跨媒体换算,1 厘米 = 37.7952755906 像素。
- 像素转 em:反向换算,把设计稿标注写成相对单位。