在移動端web頁面開發中,為了使css中使用的尺寸與設計稿一致,通常會採用rem
單位配合 lib-flexible 來實現移動端的適配,在ios裝置上flexible.js
會根據裝置的解析度動態的調整viewport
的width
和scale
來達到目的。
但是,現在很多的安卓手機也是高解析度的螢幕,有些1px邊框的按鈕和列表會顯得特別粗,flexible.js
只處理了ios的手機,所以安卓手機需要我們自己處理。
首先,可以通過window.devicepixelratio
拿到裝置的畫素比,然後給html
標籤加上的相應的樣式。
function
retina ()
var html = document.getelementsbytagname('html')[0];
classnames.foreach(function (classname) );
}複製**
這樣一來我們可以通過,html.pixel-ratio-2
給不同解析度的螢幕加上特殊的樣式處理。
由於andorid不能設定0.5px畫素的邊框,所以需要通過偽元素來模擬邊框,先使偽元素的高度為1px,然後使用transform: scale(.5)
縮小相應的大小即可。具體實現**如下:
.item
html
.pixel-ratio-3
& }
}複製**
然後不同方向的邊框,只需要跳轉偽元素的位置和縮放位置即可。該實現方案來自framework7
除了當個方向的邊框外,還有一種全邊框的按鈕,如果不做處理會顯得特別粗,但是偽元素只有before
和after
顯然剛才的單邊的方案不能用,所以只能採用其他方案。
當然還是利用偽元素畫邊框然後通過縮小,達到邊框變細的目的。首先我們使用偽元素畫四條邊,在將寬高調整到200%,最後再縮小50%,由於邊框是1px不會因寬高的改變而改變,所以我們縮小時邊框也會跟著變細。
.block-line
}html
.pixel-ratio-3
& }
}複製**
此解決方案來自frozen ui 移動web 1px邊框解決方案
js處理 首先通過window.devicepixelratio 拿到裝置畫素比,然後給html標籤加上相應的樣式 然後通過 新增的class分別設定 如 pixel ratio 2 pixel ratio 3 function retina var html document.getelement...
移動端1px邊框解決方案
在retina屏中,畫素比為2 iphone6 7 8 或3 iphone6plus 7plus 8plus 1px的邊框看起來比真的1px更寬。元素本身不定義邊框,偽元素定義1px邊框,並且根據根據畫素比值設定縮放比例,畫素比為3時設定為0.33,畫素比為2時設定0.5。html css bord...
移動端1px邊框的解決方案
因為裝置畫素比不同,邊框的大小在不同的裝置上也不同 border 1px color position relative after display block position absolute left 0 bottom 0 width 100 border bottom 1px solid c...