因爲手機屏幕相對桌面顯示器要小不少,傳統網頁上的設計在手機上的體驗會很糟糕,閱讀性很是差。
爲了讓手機也能得到良好的網頁瀏覽體驗,Apple 在移動版 Safari 中定義了 viewport meta 標籤(若是沒記錯最先提出的話),用於建立一個虛擬窗口(layout viewport),這個虛擬窗口的分辨率接近於桌面顯示器,Apple 將其定義爲980px。而後將虛擬窗口映射到移動設備的屏幕上,按比例縮放並從新渲染網頁。css
虛擬窗口(layout viewport)
移動瀏覽器默認狀況下把 viewport 設置爲一個比較寬的值(防止太窄而在可視區域中顯示錯亂)。該默認的 viewport 稱爲 layout viewport。
寬度可經過 Js 獲取(基本全部設備都支持)html
document.documentElement.clientWidth document.documentElement.clientHeight
視覺窗口(visual viewport)
瀏覽器可視區域大小。可理解爲手機物理屏幕。html5
寬度可經過 Js 獲取(不支持Android2, Opera Mini, UC8)瀏覽器
window.innerWidth window.innerHeight
ideal viewport
由Peter-Paul Koch提出的一種概念,一個完美適配移動設備的 viewport。理想狀態是不須要用戶縮放和橫向滾動條就能正常查看,顯示的文字大小合適,不區分分辨率,屏幕密度等。ide
meta viewport
移動端默認使用的是 layout viewport ,而咱們想要達到相似 ideal viewport 的效果的話,能夠經過 meta 標籤來對 viewport 進行控制。ui
移動開發中必出場的定義:google
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
用來實現 ideal viewport 的效果。idea
meta viewport 標籤屬性說明scala
width: 320 // 設置 layout viewport 的寬度,device-width 爲設備寬度 height: 800 // 和 width 對應,通常不多用 initial-scale: 1 // 設置頁面初始縮放值, minimum-scale: 1 // 容許用戶的最小縮放值 maximum-scale: 1 // 容許用戶的最大縮放值 user-scalable: yes/no // 是否允能夠手動縮放
關於 meta viewport 的各屬性還有不少有趣的知識點。視頻中能夠揭曉~設計