注意:設備像素和css像素的關係(縮小仍是放大針對的是css像素):javascript
屏幕尺寸 | 窗口尺寸 | 滾動偏移 | 視口(佈局視口) | html元素 | 事件座標 | |
---|---|---|---|---|---|---|
概念 | 指顯示器的屏幕尺寸,和顯示器有關,和瀏覽器無關 | 瀏覽器窗口的尺寸,包含滾動條 | 頁面的滾動偏移量 | 網站的最上方包含的塊,用來約束<html>元素(不包含滾動條) | 發生鼠標事件時,將公開很多於五個屬性對,以提供有關事件確切位置的信息 | |
獲取方式 | screen.width/height | window.innerWidth/height | window.pageX/YOffset | document.documentElement.clientWidth | document.documentElement.offsetWidth | |
像素單位 | 設備像素 | css像素 | css像素 | css像素 | css像素 | |
其餘說明 | 窗口的內部寬度以CSS像素爲單位,計算時須要知道將多少css像素包含在瀏覽器窗口中。所以,若是用戶放大,則窗口中的可用空間會減小 | 視口不受CSS影響。它只是在桌面上具備瀏覽器窗口的寬度和高度。在移動設備上,它要複雜得多。 | 1. pageX/Y給出相對於html的座標(css像素) 2. clientX/Y給出相對於視口的座標(css像素) 3. screenX/Y給出相對於屏幕的座標(設備像素) |
屏幕尺寸 | 視覺視口 | 佈局視口 | 滾動偏移 | html元素 | 事件座標 | |
---|---|---|---|---|---|---|
概念 | 移動設備的屏幕尺寸 | 在屏幕上顯示的頁面的一部分。用戶能夠滾動以更改其看到的頁面部分,或縮放以更改可視視口的大小。 | css佈局所依賴的視口,比視覺視口要寬,而且不一樣瀏覽器的佈局視口不一樣。 | 視覺視口相對於佈局視口的位置 | 同web端 | |
獲取方式 | screen.width/height | document.documentElement.clientWidth | window.innerWidth/Height | window.pageX/YOffset | document.documentElement.offsetWidth/Height | |
像素單位 | 設備像素 | css像素 | css像素 | css像素 | css像素 | |
其餘說明 | 當用戶放大或縮小時,視覺視口的尺寸會發生變化,由於屏幕上會容納更多或更少的CSS像素 | 1. pageX/Y給出相對於html的座標 2.clientX/Y相對於可視視口 3.screenX/Y是相對於屏幕 |
meta標籤包含有關瀏覽器和視口縮放的指令,咱們能夠經過它來設置佈局視口的寬度。css
寫法以下:html
<meta name =「 viewport」 content =「名稱=值,名稱=值」>
其中:java
在移動端,佈局視口每每比視覺視口大不少,給用戶很差的體驗。因此蘋果引入了理想視口的概念。git
爲瀏覽器定義的可完美適配移動端的理想viewport,即將佈局視口的寬度設置爲移動設備的屏幕寬度。github
1. 設置此屬性實際上發生了兩件事兒:web
2. 視覺視口和理想視口的關係以下:瀏覽器
(注意:當縮放係數變大時,那麼css像素會變大,致使視覺視口容納更少的css像素,因而視覺視口變小)iphone
當同時設置width=device-width和initial-scale時,就會產生衝突,由於兩者同時對佈局視口的寬度進行設置。ide
例如,進行以下設置時:
<meta name =「 viewport」 content =「 initial-scale = 1,width = 400」>
結論:瀏覽器經過遵循縱向或橫向的最大寬度來解決該問題。在咱們的示例中,縱向佈局視口的寬度變爲400px(較大的爲320和400),而橫向佈局視口的寬度爲480px(較大的爲480和400)。
更多信息:github
參考以下: