关于移动端1px在某些机型上变粗的问题
原因
在我们写border-bottom:1px solid red;
的时候,在有些设备下看起来会变粗
物理像素:出厂就设定好的了
逻辑像素:就是css中写的像素
当我们在css中写了1px是逻辑像素,它与物理像素有个比例,通过window.devicePixelRatio
获取(也就是DPR),1px逻辑像素因为DPR不同,所以会被放大。
而在我平时用的flexible适配方案,它会根据设备的DPR,在meta标签里设置不同的缩放比(前提是没有设置name为viewport的meta标签,才会使用flexible.js新增的meta标签)。所以在IOS上没有这个问题,而在安卓下是有的。
解决方案
1)用小数点写px
1 |
|
DPR为2:
DPR为3:
缺点:兼容性问题
2)伪元素+transform
1 |
|
DPR为2:
DPR为3:
缺点:占用了伪元素
3)flexible适配方案
不过只处理了IOS,安卓的自定义DPR都设置为1
4)线性渐变
1 |
|