在移动端通常使用rem / vw等适配,但对于字体可以看到很多教程都推荐使用px,甚至是需要偶数像素,最后根据设备的dpr来调整倍数。
所以为什么? 字体不是矢量吗,为什么?
字体当然是矢量,但是你的显示器可是由一个个像素点组成的。
例如字母A,再不做任何处理直接显示的话会显示成这样。
虽然显示器是一个个像素点,但一个像素点实际上由三个竖直的“子像素”组成:一个红色,一个绿色和一个蓝色(RGB)。
所以我们可以将使用一定算法来基于子像素
进行渲染,来让显示效果更佳平滑。
如上图,亚像素渲染仅仅是增加水平方向分辨率。
现代浏览器能够支持精度为10^6的px数值。
css值处理
- 收集声明值
- 级联产生级联值
- 指定值
- 计算值(相对单位如rem,vw必须乘以相对大小,百分比换算,url换成绝对)
- 使用值
- 实际值(做了子像素渲染之后的实际宽度)
使用值和设备有关,通常情况显示设备只能显示一像素的 我们用调试工具只能看到使用值,浏览器没用暴露实际值的接口。
需要注意的一点是:浏览器对小数的取舍不同会影响使用float布局的元素
这种方式改变了一定的渲染尺寸,单真实占据的空间依旧是原始大小。