CSS clamp中vw加rem的calc表达式计算结果的单位类型是什么?
计算结果单位结论
你给出的calc(2.5vw + 1rem)表达式,最终在浏览器渲染时的计算结果单位是像素(px)。
具体原理说明
- CSS的
calc()执行多单位混合运算时,会先把所有参与运算的单位统一转换为当前渲染上下文的绝对像素值,再完成加减计算:- 视口相对单位
2.5vw会先基于当前页面视口宽度换算为px值,比如1920px宽度的视口下,2.5vw等价于48px - 根字体相对单位
1rem会先基于当前html根元素的font-size换算为px值,默认根字体16px的场景下等价于16px;如果用户手动放大系统/浏览器字体到125%,根字体变为20px,此时1rem就等价于20px - 两者相加得到的px值,会再和
clamp的上下限参数(同样会预先换算为px值)对比,最终取符合区间要求的值应用到元素上
- 视口相对单位
- 你关注的可访问性特性不会失效:虽然最终计算结果是px单位,但rem换算为px的过程已经纳入了用户的字体缩放偏好,所以最终的px数值本身就会随用户设置的字体大小同步变化,不会出现纯vw单位无法响应用户字体调整的问题。
如果需要验证,可以打开浏览器开发者工具的「计算样式」面板,选中应用了该规则的元素,就能直接看到最终生效的实际px数值,调整视口宽度或者修改根字体大小,该数值会同步变动。
内容的提问来源于stack exchange,提问作者ACuriousMind
相关产品推荐
相关产品推荐

