備戰秋招,複習基礎。若有錯誤,歡迎批評指正,共同進步!css
資料參考:viewports剖析html
屏幕尺寸web
screen.width/height
npm
含義:用戶的屏幕的完整大小。json
度量:設備的pixels。瀏覽器
兼容性問題:IE8裏,無論使用IE7模式仍是IE8模式,都以CSS的pixels來度量bash
瀏覽器尺寸ide
window.innerWidth/Height
post
含義:包含滾動條尺寸的瀏覽器完整尺寸flex
度量:CSS的pixels
兼容性問題:IE不支持,Opera用設備pixels來度量
滾動移位
window.pageX/YOffset
含義:頁面的移位
度量:CSS的pixels
兼容性問題:pageXOffset 和 pageYOffset 在 IE 8 及以前版本的IE不支持, 使用document.body.scrollLeft
and document.body.scrollTop
來取代
viewport
document. documentElement. clientWidth/Height
含義:viewport的尺寸。貌似從元素取值,但實際描述的確是viewport的尺寸。
度量:CSS的pixels
兼容性問題:無
功能:控制你網站的最高塊狀(block)容器:<html>
元素。<html>
元素爲viewport寬度的100%。viewport嚴格等於瀏覽器的窗口,不包含滾動條。
度量<html>
元素
document. documentElement. offsetWidth/Height
含義:<html>的尺寸
度量:CSS的pixels
兼容性問題:IE用這個值標示viewport的尺寸而非<html>
事件座標
event.pageX/Y
, event.clientX/Y
, event.screenX/Y
含義:見下文
度量:見下文
兼容性問題:IE不支持pageX/Y,IE使用CSSpixels來度量screanX/Y
詳細描述:
Media查詢
div.sidebar {
width: 300px;
}
@media all and (max-width: 400px) { // styles assigned when width is smaller than 400px;
div.sidebar {
width: 100px;
}
}
複製代碼
* device-width/height使用screen.width/height來作爲的斷定值。該值以設備的pixels來度量
* width/height使用documentElement.clientWidth/Height即viewport的值。該值以CSS的pixels來度量
複製代碼
我die了!這什麼鬼啊啊啊啊啊啊啊啊!!!不知所云!!!
物理像素: 物理像素又被稱爲設備像素,他是顯示設備中一個最微小的物理部件。每一個像素能夠根據操做系統設置本身的顏色和亮度。正是這些設備像素的微小距離欺騙了咱們肉眼看到的圖像效果。
設備獨立像素: 設備獨立像素也稱爲密度無關像素,能夠認爲是計算機座標系統中的一個點,這個點表明一個能夠由程序使用的虛擬像素(好比說CSS像素),而後由相關係統轉換爲物理像素。
CSS像素: CSS像素是一個抽像的單位,主要使用在瀏覽器上,用來精確度量Web頁面上的內容。通常狀況之下,CSS像素稱爲與設備無關的像素(device-independent pixel),簡稱DIPs。
屏幕密度: 屏幕密度是指一個設備表面上存在的像素數量,它一般以每英寸有多少像素來計算(PPI)。
設備像素比: 設備像素比簡稱爲dpr,其定義了物理像素和設備獨立像素的對應關係。它的值能夠按下面的公式計算獲得: 設備像素比 = 物理像素 / 設備獨立像素
在JavaScript中,能夠經過window.devicePixelRatio
獲取到當前設備的dpr。而在CSS中,能夠經過-webkit-device-pixel-ratio
,-webkit-min-device-pixel-ratio
和 -webkit-max-device-pixel-ratio
進行媒體查詢。
經過Hack手段來根據設備的dpr值相應改變標籤中viewport的值,從而讓頁面達到縮放的效果,也變相的實現頁面的適配功能。
<!-- dpr = 1-->
<meta name="viewport" content="initial-scale=scale,maximum-scale=scale,minimum-scale=scale,user-scalable=no">
<!-- dpr = 2-->
<meta name="viewport" content="initial-scale=0.5,maximum-scale=0.5,minimum-scale=0.5,user-scalable=no">
<!-- dpr = 3-->
<meta name="viewport" content="initial-scale=0.3333333333,maximum-scale=0.3333333333,minimum-scale=0.3333333333,user-scalable=no">
複製代碼
vw 是相對視口(viewport)的寬度而定的,長度等於視口寬度的1/100。
假如瀏覽器的寬度爲200px,那麼1vw就等於2px(200px/100)。
vh是相對視口(viewport)的高度而定的,長度等於視口高度的1/100。
假如瀏覽器的高度爲500px,那麼1vh就等於5px(500px/100)。
vmin和vmax是相對於視口的高度和寬度二者之間的最小值或最大值。
若是瀏覽器的高爲300px、寬爲500px,那麼1vmin就是3px,1vmax就是5px;若是瀏覽器的高爲800px,寬爲1080px,那麼1vmin也是8px,1vmax也是10.8px。
資料參考:【移動端適配】用vw、vh+媒體查詢打造最完美的移動端適配方案
↑ 寫得超全!!一篇完事兒!!
npm install postcss-px-to-viewport --save-dev
複製代碼