公司的设计师在做设计图的时候都是以iphone6(宽为750物理像素)为基准进行设计的。iphone6的设备像素比(即css像素与物理像素的比例)是2,所以设计师在设计图画了边框为1px的box的时候,相对于css代码来说就是0.5像素。
对于这个问题,最直观的方法就是css直接设置边框为0.5px,经过测试,iPhone可以正常显示,android下几乎所有的浏览器都会把0.5识别为0,即无边框状态,所以这种方式行不通
CSS3有缩放的属性,我们可以利用这个属性,缩小50%的1px的边框,来实现这个功能,具体实现代码如下:
1 .border { 2 position: relative; 3 } 4 5 .border::before { 6 content: ''; 7 font-size: 0; 8 position: absolute; 9 left: 0; 10 top: 0; 11 display: block; 12 width: 100%; 13 height: 100%; 14 border: 1px solid #000; 15 transform-origin: 0 0; 16 box-sizing: border-box; 17 } 18 19 @media (min-resolution: 2dppx) { 20 .border::before{ 21 width: 200%; 22 height: 200%; 23 transform: scale(.5); 24 } 25 } 26 27 @media (min-resolution: 3dppx) { 28 .border::before{ 29 width: 300%; 30 height: 300%; 31 transform: scale(.33); 32 } 33 }
这段代码使用了媒体查询判断设备像素比是2还是3,然后再进行设置,应为通常使用的手机就是2倍或3倍,当然有4倍和5倍等等,这些设备比较少。。
<resolution>
表示分辨率(表示设备的像素密度),单位dppx
表示每个px
的点数,如果设置3dppx则表示3个CSS像素宽度是1个物理像素宽度(即css像素与物理像素的比例是3)
更多内容查看MDN