微信小程式(適配小結 移動端1px與選擇器權重)

2021-09-26 06:08:12 字數 2120 閱讀 3812

(1)物理畫素(physical pixel)

物理畫素又被稱為裝置畫素(device pixel簡稱dp)他是顯示裝置中乙個最微小的物理部件。

乙個裝置的物理畫素是固定不變的。

螢幕畫素密度ppi

螢幕畫素密度ppi(pixel per inch)

螢幕畫素密度(ppi)是指乙個裝置表面上存在的畫素數量,它通常以每英吋有多少畫素來計算。螢幕畫素密度與螢幕尺寸和螢幕解析度有關,在單一變化條件下,螢幕尺寸越小、解析度越高。

單位:dpi(dots per inch,每英吋點數)

計算:螢幕畫素密度(ppi) = 對角線解析度 / 對角線尺寸

在移動端web開發中,ui設計稿中設定邊框為1畫素,前端在開發過程中如果出現border:1px,測試會發現在某些機型上,1px會比較粗,即是較經典的 移動端1px畫素問題。

解決1px問題的方案有很多種,接下來依次對比分析下。

①**查詢

②設定 border-image

③利用box-shadow陰影

④transform: scale(0.5)

⑤**查詢 + transfrom

(1) **查詢

利用裝置畫素比縮放,設定小數畫素;css與js寫法任選其一

優點:簡單,好理解

缺點:相容性差,目前之餘ios8+才支援,在ios7及其以下、安卓系統都是顯示0px。

(2)設定 border-image 方案

在使用border-image時,將border設計為物理1px

border-width:指定邊框的寬度,可以設定四個值,分別為上右下左border-width: top right bottom left。

(3)利用box-shadow陰影也可以實現

box-shadow屬性的用法:box-shadow: h-shadow v-shadow [blur] [spread] [color] [inset]

引數分別表示: 水平陰影位置,垂直陰影位置,模糊距離, 陰影尺寸,陰影顏色,將外部陰影改為內部陰影,後四個可選。

優點:沒有圓角問題

缺點:顏色不好控制

transform方案

(4)transform: scale(0.5) 方案 - 推薦: 很靈活

核心思想是使用transform的scale來整體縮放,如果你想畫一條1px的線,就可以直接用

理論上在dpr為2時就是scaley(0.5),在dpr為3時就是scaley(0.333),但是通常並沒有針對其他dpr的做特殊處理。

因為在iphone6(dpr=2)和iphone6 plus(dpr=3)中看起來差別不大。

如果你想給乙個元素加乙個1px的邊框可以利用到偽元素,在這個方案下邊框加圓角也很容易實現

優點:可以實現圓角,京東就是這麼實現的

**查詢 + transfrom

(5)**查詢 + transfrom 對方案1的優化

移動端1px實現

新增css 1px邊框時,在手機上顯示為粗線,解決辦法就是利用偽類設定1px邊框,然後根據裝置畫素比進行y軸的縮放,使其表現為真正的1px.stylus的語法 1.定義乙個函式。找到要加1px的標籤,新增定位和偽類。border 1px color position relative after d...

移動端1px問題

在移動端頁面中設定邊框為1px時,在有的裝置中可能會發現邊框比1px要粗即1培訓1px 1px 裝置畫素比dpr 裝置畫素 css畫素 某一方向上 當dpr為2時1px實際為2px iphone6 dpr為3時1px為3px inphoex 所有看起來1px就會變粗 ios8下已經支援帶小數的px值...

移動端1px問題

在高清屏下,移動端的1px 會很粗。那麼為什麼會產生這個問題呢?主要是跟乙個東西有關,dpr devicepixelratio 裝置畫素比,它是預設縮放為100 的情況下,裝置畫素和css畫素的比值。window.devicepixelratio 物理畫素 css畫素目前主流的螢幕dpr 2 iph...