轉載請告知並註明來源做者
做者
:唐金健
網絡暱稱
:御焱
掘金
知乎
思否
專欄
:優雅的前端
有時候在獲取瀏覽器、元素、屏幕的尺寸,傻傻分不清。爲了讓本身清晰認識,可以快速肯定本身須要哪一個屬性,如今把這些尺寸屬性整理了一下。
瀏覽器視口(viewport)寬度(單位:像素),若是存在滾動條則包括它。
let viewportWidth = window.innerWidth; let viewportHeight = window.innerHeight;
window.innerWidth
和window.innerHeight
是隻讀屬性,無默認值。前端
若是HTML中添加了如下內容,則頁面在移動端訪問的時候,視口寬高始終與邏輯分辨率一致。
不然,移動端瀏覽器會在一個一般比屏幕更寬的虛擬」窗口「(視口)中渲染頁面。chrome
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no" />
整個瀏覽器窗口的高度(單位:像素),包括側邊欄(若是存在)、窗口鑲邊(window chrome)和窗口調正邊框(window resizing borders/handles)。
let outerWidth = window.outerWidth; let outerHeight = window.outerHeight;
window.outerWidth
和window.outerHeight
是隻讀屬性,無默認值。
在使用桌面端瀏覽器的模擬移動設備查看網頁時,這兩個屬性,依然指的是桌面端瀏覽器窗口的寬高。segmentfault
元素內部寬 = width + padding-left + padding-right - 豎直滾動條寬度
元素內部高 = height + padding-top + padding-bottom - 橫向滾動條高度
let clientWidth = element.clientWidth; let clientHeight = element.clientHight;
元素佈局寬 = width + padding-left + padding-right + 豎直滾動條寬度 + border-left + border-right
元素佈局高 = height + padding-top + padding-bottom + 橫向滾動條高度 + border-top + border-bottom
let offsetWidth = element.offsetWidth; let offsetHight = element.offsetHight;
元素的內容寬高,包括因爲溢出致使內容在屏幕上下不可見的內容。
let scrollWidth = element.scrollWidth; let scrollHeight = element.scrollHeight;
屏幕分辨率寬高。若是是移動設備,則返回邏輯分辨率寬高。
let screenWidth = window.screen.width; let screenHeight = window.screen.height;
減去好比Windows的任務欄等界面特性的屏幕的可用寬高。若是是移動設備,則返回邏輯分辨率寬高。
let availWidth = window.screen.availWidth; let availHeight = window.screen.availHeight;