公司的設計師在做設計圖的時候都是以iphone6(寬為750物理像素)為基准進行設計的。iphone6的設備像素比(即css像素與物理像素的比例)是2,所以設計師在設計圖畫了邊框為1px的box的時候,相對於css代碼來說就是0.5像素。
設計師的設計稿是375*2和667*2這樣作圖
對於這個問題,最直觀的方法就是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