变粗原因
css中的1px并不等于移动设备的1px,因为不同的手机有不同的像素密度。在window对象中有一个devicePixelRatio属性,他可以反应css中的像素与设备的像素比。(devicePixelRatio = 物理像素 / 独立像素。)手机的精度越大,线越粗。
解决办法
媒体查询利用设备像素比缩放,设置小数像素
优点:简单,好理解
缺点:兼容性差,目前之余IOS8+才支持,在IOS7及其以下、安卓系统都是显示0px。
border1px(width = 1px,color = #ccc,style = solid,radius = 0)
position relative
&::after
position absolute
pointer-events none//边框遮盖问题
left 0
right 0
bottom 0
top 0
z-index 999//防止被覆盖
content ''
border-width width
border-color color
border-style style
border-radius radius
width 200%
height 200%
@media (max--moz-device-pixel-ratio: 1.49),(-webkit-max-device-pixel-ratio: 1.49),(max-device-pixel-ratio: 1.49),(max-resolution: 143dpi),(max-resolution: 1.49dppx)
height 100%
border-radius radius
transform scale(1)
@media (min--moz-device-pixel-ratio: 1.5) and (max--moz-device-pixel-ratio: 2.49),(-webkit-min-device-pixel-ratio: 1.5) and (-webkit-max-device-pixel-ratio: 2.49),(min-device-pixel-ratio: 1.5) and (max-device-pixel-ratio: 49),(min-resolution: 144dpi) and (max-resolution:239dpi),(min-resolution:1.5dppx) and (max-resolution: 2.49dppx)
width 200%
height 200%
border-radius radius*2
transform scale(0.5)
@media (min--moz-device-pixel-ratio: 2.5),(-webkit-min-device-pixel-ratio: 2.5),(min-device-pixel-ratio: 2.5),(min-resolution: 240dpi),(min-resolution: 2.5dppx)
width 300%
height 300%
border-radius radius*3
transform scale(0.3333333)
transform-origin 0 0