1. 程式人生 > >移動端1px的解決方法

移動端1px的解決方法

在上個專案中,移動端1px問題被困擾了好久,設定1px邊框,實際顯示2px。https://hzzly.github.io/2017/03/13/%E7%A7%BB%E5%8A%A8%E7%AB%AF1px%E7%9A%84%E8%A7%A3%E5%86%B3%E6%96%B9%E6%B3%95/
以下是我在專案中的解決方法,才疏學淺,輕噴。

關於什麼是移動端1畫素邊框問題,先上兩張圖,大家就明白了。

假的1px:
2px

真的1px:
1px

原來Retine屏的解析度始終是普通螢幕的2倍,1px的邊框在devicePixelRatio=2的retina屏下會顯示成2px。

解決方案

transform: scaleY()

12345678910111213141516171819202122232425262728293031323334 <div class="border-1px"></div><style type="text/scss">.border-1px { position: relative; &:after{ display: block; position: absolute; left: 0; bottom: 0; width: 100%; border-top: 1px solid #000; content: ''; }}@media (-webkit-min-device-pixel-ratio: 1.5),(min-device-pixel-ratio: 1.5) { .border-1px{ &::after{ -webkit-transform: scaleY(0.7); transform: scaleY(0.7); } }}@media (-webkit-min-device-pixel-ratio: 2),(min-device-pixel-ratio: 2) { .border-1px{ &::after{ -webkit-transform: scaleY(0.5); transform: scaleY(0.5); } }}</style>

到這已經成功解決了1px問題。

好了,吃飯去嘍,溜了溜了。。。