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


基礎概念

dpi

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

物理像素

移動設備出廠時,就具備的分辨率,小米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.

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

dpis width & scale

dpis width 如何得出?

  • 你先需要計算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 xhdpi

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

那么結論來了

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

那么開發時,圖片我們改如何選擇呢?

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

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

但是360的邏輯像素只是小米5的,不同手機之間存在差異性,為了讓所有手機上面的圖片較為正常的顯示,那么應該選取一個物理像素較高的圖片。

android端通常在本地准備了多套的圖,根據不同scale來選擇不同的圖片,以便在所有手機上都能較好的顯示,同時保證了性能與展示效果,當然你可以選擇僅僅使用一張最大的圖,但代價便是內存占用和性能問題。

移動web端更是如此,因為移動web端的圖片通常是從服務器獲取,那么如果都統一使用最大的圖片,勢必會影響加載速度,所以根據實際使用情況,自己斟酌。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM