em 转像素(px)换算器

浏览器默认字号为 16px,所以 1em 折出来是 16 像素。但 em 相对父元素的字号计算,嵌套再写一次 em 会与父级相乘:父级 1.25em 是 20 像素,子元素再写 1.25em 就变成 25 像素,而不是 20。本页把这个乘链逐层算给你看。

基准字号 16px:1em = 16px,1rem = 16px;em 相对父级会复合,rem 恒相对根字号。
1.25 em = 20 px 折合像素基准:1 em = 16 px 单位汇率:1 em = 16 px -- em 级联演示(基准 16px,嵌套 3 层)-- 第 1 层:1.25em = 20 px,同值 rem = 20 px 第 2 层:1.25em = 25 px,同值 rem = 20 px 第 3 层:1.25em = 31.25 px,同值 rem = 20 px em/rem 比值(第 3 层)= 1.5625 -- 同一数值展开到八个单位 -- 20 px 15 pt 1.25 pc 1.25 em 1.25 rem 0.208333333333 in 0.529166666667 cm 5.29166666667 mm -- 批量(目标单位 px)-- 1 em = 16 px 1.25 em = 20 px 1.5 em = 24 px 2 em = 32 px 0.8 em = 12.8 px

默认示例:1.25em 换成像素,并按三层嵌套演示复合。数值、单位、基准字号任意一项改动即重新计算,光标停在数值框里按回车同样触发一次。

使用方法

  1. 「数值」默认填 1.25,允许 0 到 100000,支持小数;「源单位」默认 em,「目标单位」默认像素。改任意一项立刻重算,光标停在数值框里按回车同样触发一次换算。
  2. 两个单位下拉各有八个选项:像素、磅、派卡、em、rem、英寸、厘米、毫米。前三者与 em/rem 都属于「按当前字号折算」的一类,后三者是绝对单位,取值不随字号变化。
  3. 「根字号基准」默认 16,范围 4 到 72,单位是像素。它就是浏览器默认字号,em 与 rem 都按它折算;把这一项改成别的值,等于设想用户把浏览器字号调大或调小之后的情形。
  4. 「级联嵌套层数」默认 3,范围 1 到 6。它生成一个演示链:同一数值在第 n 层等于基准乘以数值的 n 次方,而同样写法的 rem 在任何一层都恒为基准乘以数值一次。
  5. 「小数位」默认 12,范围 0 到 12。它决定结果最多保留几位小数;当结果本身需要的位数比设定值更多时,会保留必要位数而不是硬截断。
  6. 「批量换算」默认已经写好五行示例,每行一条「数值 + 空格 + 单位」。按 Ctrl+Enter(Mac 上 Cmd+Enter)一次算完;万一被清空,点换算时会自动填回这五行。
  7. 结果区给出「原值 源单位 = 结果 目标单位」这一行,下面跟着基准字号、单位汇率、级联演示链,以及同一数值展开到八个单位的清单。
  8. 清单下面是一张 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.581.524
0.7512232
116348
1.12518464
1.2520——

下面这张是 em 与 rem 的级联对照,左侧为嵌套层数,中间是同一 em 写法的实际像素,右侧是改成 rem 后的像素,两者之比随层数指数增长。

嵌套层数写 1.25em写 1.25remem ÷ rem
120201
225201.25
331.25201.5625
放小方向父 0.8em、子 0.8em10.2412.80.8

最后是绝对单位锚点表,把 2em 与 1 派卡在各单位下的取值并列。

取值像素磅英寸
2 em32240.333333333333
1 pc(派卡)16120.166666666667
1 em16120.166666666667
1 in(英寸)96721
1 cm(厘米)37.795275590628.34645669290.393700787402

读这三张表的方法:第一张找常用档位,第二张判断该不该换 rem,第三张做跨媒体换算。第三张里 1em 与 1pc 同值只是基准 16px 下的巧合,改了根字号就不再成立。

结果边界、舍入与适用说明

常见问题

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 像素。打印时才会再由输出设备把像素映射到物理长度。

这个工具免费吗?

免费,无需注册即可使用。

输入的数据安全吗?

安全。计算在当前浏览器本地完成,不会上传输入内容。

相关工具