關(guān)于高寬有以下概念:(僅用寬度說(shuō)明)
window.screen.width 物理屏幕寬度
window.outerWidth 瀏覽器作為一個(gè)軟件占的寬度,注意簿盅,即使將瀏覽器一部分放在屏幕外,值還是一樣的
window.innerWidth 瀏覽器中用來(lái)展示文檔(網(wǎng)頁(yè))內(nèi)容的區(qū)域的寬度
Element.offsetWidth揍魂、Element.scrollWidth
前者代表文檔內(nèi)元素的包含元素內(nèi)容寬度桨醋、內(nèi)邊距、邊框和元素滾動(dòng)條的寬度
后者代表文檔內(nèi)元素的內(nèi)容寬度 + 溢出內(nèi)容寬度 (不包含:邊框和元素滾動(dòng)條的寬度)
Element.clientWidth
文檔內(nèi)元素的包含元素內(nèi)容寬度现斋、內(nèi)邊距(不包含:邊框和元素滾動(dòng)條的寬度)
getComputedStyle(ele,null).width //ele為元素
元素內(nèi)容寬度
經(jīng)驗(yàn)證喜最,以上獲取到的寬度都與元素是否完全在可見區(qū)域內(nèi)沒有關(guān)系。
對(duì)于一個(gè)元素而言:
clientWidth:
border以內(nèi)的部分(不含border庄蹋、滾動(dòng)條)瞬内;可視的內(nèi)容寬度+可視的padding 寬度,如果出現(xiàn)滾動(dòng)條限书,滾動(dòng)條會(huì)占用一些可視寬度虫蝶,則值會(huì)減小
(其實(shí)就是一個(gè)元素提供的內(nèi)部視口)
scrollWidth:
border以內(nèi)的部分,不過(guò)包含未顯示出來(lái)的部分(不含border倦西、滾動(dòng)條)
offsetWidth:
margin以內(nèi)的部分(不含margin)能真;即元素在瀏覽器中的可視占用寬度
有的元素雖然被其它元素遮擋了部分,但被遮擋的部分還是視為可視寬度計(jì)算扰柠;
滾動(dòng)條出現(xiàn)在 border和padding之間粉铐;
不同瀏覽器實(shí)現(xiàn)可能有差異。
大概存在以下關(guān)系:
1耻矮、獲取整個(gè)瀏覽器的高寬:
window.outerHeight //此處瀏覽器占滿了整個(gè)屏幕秦躯,所以值和屏幕的高寬的值是一樣的
1080
window.outerWidth
1920
2、獲取用來(lái)顯示文檔的高寬:
或者
document.body.clientWidth
document.documentElement.clientWidth
body是DOM對(duì)象里的body子節(jié)點(diǎn)裆装,即 <body> 標(biāo)簽踱承;
documentElement 是整個(gè)節(jié)點(diǎn)樹的根節(jié)點(diǎn)root倡缠,即<html> 標(biāo)簽;
clientWidth 是元素的內(nèi)容和padding值茎活,沒有算邊框
document.body.clientWidth 和 document.documentElement.clientWidth獲取的值可能會(huì)不同昙沦。(如果我把body和html之間設(shè)置了margin)
https://www.imooc.com/qadetail/108708
Element.clientWidth
https://developer.mozilla.org/zh-CN/docs/Web/API/Element/clientWidth
主要是記住兩點(diǎn):
一、body是html的子元素
二载荔、clientWidth 計(jì)算的是 元素的內(nèi)部距離盾饮,包含margin,但不包含border懒熙,所以width<clientWidth