移动端渲染1px边框

移动端渲染1px边框,在安卓设备上ok,没问题,但是到了ios设备上,渲染的会是2px,甚至是3px。可是明明写的1px啊,渲染的为什么不对啊?接下来了解一下不得不说的DPR(Device Pixel Ratio)。

ios设备使用的是Retina屏,而Retina屏的分辨率是普通屏幕的2倍。所以1px的边框显示的是2px。

DPR:设备物理像素和设备独立像素的比值。

获取DPR的方式:

在js中,可以用window.devicePixelRatio获取当前设备的dpr。

在css中,可通过-webkit-device-pixel-ratio,-webkit-min-device-pixel-ratio和 -webkit-max-device-pixel-ratio进行媒体查询,对不同dpr的设备,做一些样式适配。

例如:

.border{border:1px solid #999}

@media screen and (-webkit-min-device-pixel-ratio: 2){.border { border:0.5px solid #999}}

@media screen and (-webkit-min-device-pixel-ratio: 3){.border { border:0.333333px solid #999}}

还可以用伪类解决,构建一个1px的伪元素,将它的宽高放大到2倍,边框是1px,然后再缩放到0.5;如下:

.radius-border{position: relative;}

@media screen and (-webkit-min-device-pixel-ratio: 2){

.radius-border:before{

content: "";

box-sizing: border-box;

position: absolute;

width: 200%;

height: 200%;

left: 0;

top: 0;

border:1px solid #999;

-webkit-transform(scale(0.5));

-webkit-transform-origin: 0 0;

transform(scale(0.5));

transform-origin: 0 0;

}

}

或者使用淘宝提供的flexible.js,但适用于ios设备,安卓设备不可以。

你可能感兴趣的:(移动端渲染1px边框)