移動端適配-像素 viewport


 

 

 一個網頁,在電腦端和pc端,設置同樣的像素,為什么顯示的大小不同?

先直接回答一下這個問題,再講一下相關的概念;

  • 移動端對這個頁面進行了縮放,這是瀏覽器幫我們做的,雖然沒有設置 meta 標簽,沒有設置initial-scale(縮放值)

  瀏覽器默認,對於移動端的頁面,會先在980px寬的”幕布“上渲染,然后把這個“幕布”縮放在屏幕尺寸上,相當於meta標簽這樣設置:

<meta name="viewport" content="980, initial-scale=0.382">  

  0.382是如何計算出來的:設備像素寬度/布局視口寬度(幕布)  即 375/980

  但是再看一下,在頁面上最寬的元素是1040px,是如何放在980px的幕布上的呢?

<meta name="viewport" content="1040, initial-scale=0.360"> 

  計算過程同上

 

將這個meta標簽放在 https://lishiwangye.51240.com/ 里,發現跟瀏覽器默認一樣,縮放了,沒有滾動條

 

 

 

!!!移動端寫css頁面布局寬度980px以下的,都是在980px寬的幕布上先渲染然后縮放,而在pc端網頁沒有縮放,是因為瀏覽器不進行默認縮放,直接顯示

原因現在從頭捋一下

像素:

px(CSS pixels):虛擬像素,可以理解為“直覺”像素,我要這個元素寬高10px;
dp(device pixels):設備像素(物理像素),可以理解為實際的像素,這個寬高為10px的元素在設備中實際用了多少個物理像素點表示;
dpr(device pixels ratio):設備像素比,公式為1px = (dpr)^2 * 1dp,可以理解為1px由多少個設備像素組成;

  例如:設備 dpr=2,1px 用4個像素點表示,即2×2dp

iPhone4之前,移動端dpr都是1,即css 1px在設備上顯示1個物理像素點

dpr>=2的,稱為視網膜屏幕

viewport:

viewport原理在於:

先將頁面渲染在一個width為顯示設備默認尺寸的viewport上,如iphone6為980px;
然后將viewport等比例縮放至整個手機屏幕上;
假如元素寬高為375*667px,先將元素渲染在寬度為980px的viewport上,然后等比例縮放在整個手機屏幕上

 

layout viewport:布局視口(幕布)

visual viewport:視覺視口(屏幕的尺寸)

ideal viewport:理想視口(屏幕與布局相同時候的視口)


免責聲明!

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



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