移動前端適配—邏輯像素和物理像素

基礎概念

dpi

每英寸所含有的像素點的個數。html

物理像素

移動設備出廠時,就具有的分辨率,小米5 1920x1080 iphone6 1334x750前端

邏輯像素

Give your page a <meta name="viewport" content="width=device-width">, read out document.documentElement.clientWidth, and most browsers will give you the width of the layout viewport, which now equals the dips width.android

當你在html設置了<meta name="viewport" content="width=device-width">,那麼頁面就會以移動設備的dpis width做爲邏輯像素。ios

dpis width & scale

dpis width 如何得出?web

  • 你先須要計算dpi
    小米5爲例, sqrt(19202 x 10802) / 5.15(屏幕的物理尺寸) = 427.7
  • 計算scale
    scale = 427.7 / 160 約等於 3.(這個計算是針對於android手機,不過ios也相似,至少目前的機型都符合這個計算,有清楚的大佬能夠告知)
    android 以160的倍數做爲分隔點,來劃分不一樣手機邏輯像素的縮放比例。
    160 mdpi

    320 hdpi服務器

    480 xhdpiiphone

  • 計算dpis width 也就是 邏輯像素
    dpis width = 1080 / 3 = 360

那麼結論來了

開發時其實只須要考慮邏輯像素,android 中 dp單位和移動前端中的px是同樣的,ios中用的也是邏輯像素。性能

那麼開發時,圖片咱們改如何選擇呢?

1280 x 720 、1920 x 1080 、2560 x 1440,這物理分辨率不一樣的手機之間有什麼區別?htm

仍是以小米5爲例,邏輯像素是360,那麼其實對於小米5來講360px(物理像素)的圖片就能夠正常顯示,而且不會拉伸,那麼爲了讓圖片的色彩更加好,可使用720px(物理像素)的圖片或者是1080px(物理像素)的圖片。圖片

可是360的邏輯像素只是小米5的,不一樣手機之間存在差別性,爲了讓全部手機上面的圖片較爲正常的顯示,那麼應該選取一個物理像素較高的圖片。

android端一般在本地準備了多套的圖,根據不一樣scale來選擇不一樣的圖片,以便在全部手機上都能較好的顯示,同時保證了性能與展現效果,固然你能夠選擇僅僅使用一張最大的圖,但代價即是內存佔用和性能問題。

移動web端更是如此,由於移動web端的圖片一般是從服務器獲取,那麼若是都統一使用最大的圖片,勢必會影響加載速度,因此根據實際使用狀況,本身斟酌。

相關文章
相關標籤/搜索