CSS单位em、rem、vh、vw与px的换算关系究竟是什么?

兄弟打扰一下,CSS单位em、rem、vh、vw与px的换算关系究竟是什么?
最新回答
怪味

2026-07-31 09:03:41

em、rem、vh、vw与px没有固定换算关系,它们各自基于不同基准动态计算,最终由浏览器渲染为像素值,但对应关系随环境变化而改变。具体特性如下:

  • em单位:基于当前元素的父元素字体大小计算。

    若父元素字体大小为16px,则1em = 16px;若父元素字体大小变为20px,则1em = 20px。

    嵌套元素中,em会逐级继承父元素的字体大小,导致计算复杂化。例如,子元素设置font-size: 1.2em,若父元素为16px,则子元素实际为19.2px;若父元素改为20px,子元素则变为24px。

  • rem单位:基于根元素(html)字体大小计算,通常默认值为16px(可通过CSS修改)。

    若根元素字体大小为16px,则1rem = 16px;若设置为20px,则1rem = 20px。

    与em不同,rem始终以根元素为基准,避免了嵌套导致的计算混乱,适合全局尺寸控制(如间距、字体)。

  • vh单位:基于视口高度的百分比计算,1vh = 视口高度的1%。

    若视口高度为1000px,则1vh = 10px;若视口高度变为800px,则1vh = 8px。

    常用于全屏布局或垂直方向响应式设计(如height: 100vh表示元素高度等于视口高度)。

  • vw单位:基于视口宽度的百分比计算,1vw = 视口宽度的1%。

    若视口宽度为1200px,则1vw = 12px;若视口宽度变为600px,则1vw = 6px。

    适合水平方向响应式设计(如width: 50vw表示元素宽度为视口宽度的一半)。

  • px单位:固定像素值,不随环境变化。

    1px始终代表屏幕上的一个物理像素点(在高DPI设备中可能被缩放,但逻辑值不变)。

    与相对单位(em、rem、vh、vw)的本质区别在于其静态性,无法适应不同设备或布局上下文。

关键区别总结:

  • 动态性:em、rem、vh、vw的值随父元素字体、根元素字体或视口尺寸变化而变化,px固定不变。
  • 基准依赖:em依赖父元素字体,rem依赖根元素字体,vh/vw依赖视口尺寸,px无依赖。
  • 应用场景:

    em适合局部文本尺寸(如按钮内文字相对父容器调整)。

    rem适合全局统一尺寸(如整个页面的字体、间距)。

    vh/vw适合视口相关的布局(如全屏横幅、自适应卡片)。

    px适合需要精确控制的场景(如图标大小、边框宽度)。

示例说明:

  • 在800px宽视口中,1vw = 8px仅在当前视口尺寸下成立;若用户调整浏览器宽度为1200px,则1vw = 12px。
  • 若根元素字体设置为18px,则1rem = 18px,与父元素字体无关。
  • 嵌套元素中,em可能因多层继承导致实际值难以预测,而rem始终保持一致。

理解这些单位的动态特性,而非简单追求与px的固定换算,是掌握响应式设计的关键。