1像素边框

公司的设计师在做设计图的时候都是以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)

@media (min-resolution: 3dppx) {}

 

更多内容查看MDN

上一篇:通过伪类元素画0.5px细线


下一篇:高维数据可视化之t-SNE算法