溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

javascript獲取高度

發(fā)布時間:2020-06-29 23:36:28 來源:網(wǎng)絡(luò) 閱讀:557 作者:csboyty 欄目:web開發(fā)

元素邊框外側(cè)相對于父容器的邊框外側(cè)的高度

chrome firefox ie
原生

offsetTop 元素邊框外側(cè)相對于父容器的邊框內(nèi)側(cè)的高度 元素邊框外側(cè)相對于父容器的邊框內(nèi)側(cè)的高度 元素邊框外側(cè)相對于父容器的邊框內(nèi)側(cè)的高度
offsetHeight 元素的高度(包括padding和border) 元素的高度(包括padding和border) 元素的高度(包括padding和border)
scrollHeight 元素內(nèi)容實際高度 元素內(nèi)容實際高度 元素內(nèi)容實際高度
clientHeight 元素可見區(qū)域高度(包括padding) 元素可見區(qū)域高度(包括padding) 元素可見區(qū)域高度(包括padding)
clientTop 元素上邊框高度 元素上邊框高度 元素上邊框高度
scrollTop 元素滾動了的高度 元素滾動了的高度 元素滾動了的高度
jquery

offset().top 獲取元素距離文檔頂部高度 獲取元素距離文檔頂部高度 獲取元素距離文檔頂部高度
position().top 元素margin外側(cè)相對于父容器的邊框內(nèi)側(cè)的高度 元素margin外側(cè)相對于父容器的邊框內(nèi)側(cè)的高度 元素margin外側(cè)相對于父容器的邊框內(nèi)側(cè)的高度
height() 元素實際高度 元素實際高度 元素實際高度
innerHeight() 元素高度(包括padding) 元素高度(包括padding) 元素高度(包括padding)
outerHeight() 元素高度(包括padding、border) 元素高度(包括padding、border) 元素高度(包括padding、border)
outerHeight(true) 元素高度(包括padding、border、margin) 元素高度(包括padding、border、margin) 元素高度(包括padding、border、margin)
scrollTop() 元素滾動了的高度 元素滾動了的高度 元素滾動了的高度
窗口、文檔高度

$(window).height() 窗口可見區(qū)域高度 窗口可見區(qū)域高度 窗口可見區(qū)域高度
document.documentElement.clientHeight 文檔可見區(qū)域高度 文檔可見區(qū)域高度 文檔可見區(qū)域高度
window.screen.height 屏幕分辨率高度 屏幕分辨率高度 屏幕分辨率高度
window.screen.availHeight 屏幕可用高度(屏幕高度除去底部任務(wù)欄) 屏幕可用高度(屏幕高度除去底部任務(wù)欄) 屏幕可用高度(屏幕高度除去底部任務(wù)欄)
window.screenY 窗口距離屏幕頂部高度 窗口距離屏幕頂部高度 窗口距離屏幕頂部高度
window.screenTop 窗口距離屏幕頂部高度 無此屬性 窗口距離屏幕頂部高度
$document.height() 文檔高度 文檔高度 文檔高度
document.documentElement.scrollHeight 文檔內(nèi)容高度 文檔內(nèi)容高度 文檔內(nèi)容高度
document.body.scrollHeight body內(nèi)容高度 body內(nèi)容高度 body內(nèi)容高度

注意:
offsetTop 父容器必須設(shè)置了relative或者是absolute,否則會一直往上找設(shè)置了兩者的祖先元素,chrome和ie最終返回距離文檔頂部的高度,火狐返回的是距離body元素外邊框的高度。
position也是一樣,不過三個瀏覽器最后都返回的是距離文檔頂部的高度。

通常情況下
$document.height()=document.documentElement.scrollHeight=document.body.scrollHeight=$body.outerHeight(true)

$(window).scrollTop()=$(document).scrollTop()=window.scrollY=document.body.scrollTop=
window.pageYOffset

$el.outerHeight()=$el[0].offsetHeight;

$(window).height()=document.documentElement.clientHeight;

$el.innerHeight()=$el[0].clientHeight;

$el.scrollTop()=$el[0].scrollTop;

在代碼中如果要用到高度的時候最好使用offsetHeight或者outerHeight()。

窗口滾動到底部:窗口高度+滾動了的高度=文檔高度。
元素滾動到底部:元素可見高度+滾動了的高度=元素內(nèi)容高度。

瀏覽器差異
offsetHeight
IE、Opera 認(rèn)為 offsetHeight = clientHeight + 滾動條 + 邊框。
NS、FF 認(rèn)為 offsetHeight 是網(wǎng)頁內(nèi)容實際高度,可以小于 clientHeight。

scrollHeight
IE、Opera 認(rèn)為 scrollHeight 是網(wǎng)頁內(nèi)容實際高度,可以小于 clientHeight。
NS、FF 認(rèn)為 scrollHeight 是網(wǎng)頁內(nèi)容高度,不過最小值是 clientHeight。

簡單地說
clientHeight 就是透過瀏覽器看內(nèi)容的這個區(qū)域高度。
NS、FF 認(rèn)為 offsetHeight 和 scrollHeight 都是網(wǎng)頁內(nèi)容高度,只不過當(dāng)網(wǎng)頁內(nèi)容高度小于等于 clientHeight 時,scrollHeight 的值是 clientHeight,而 offsetHeight 可以小于 clientHeight。
IE、Opera 認(rèn)為 offsetHeight 是可視區(qū)域 clientHeight 滾動條加邊框,scrollHeight 則是網(wǎng)頁內(nèi)容實際高度。

window 和 document使用height代替innerHeight和outerHeight

鼠標(biāo)事件:
clientX 設(shè)置或獲取鼠標(biāo)指針位置相對于當(dāng)前窗口的 x 坐標(biāo),其中客戶區(qū)域不包括窗口自身的控件和滾動條。 
clientY 設(shè)置或獲取鼠標(biāo)指針位置相對于當(dāng)前窗口的 y 坐標(biāo),其中客戶區(qū)域不包括窗口自身的控件和滾動條。 
offsetX 設(shè)置或獲取鼠標(biāo)指針位置相對于觸發(fā)事件的對象的 x 坐標(biāo)。 
offsetY 設(shè)置或獲取鼠標(biāo)指針位置相對于觸發(fā)事件的對象的 y 坐標(biāo)。 
screenX 設(shè)置或獲取獲取鼠標(biāo)指針位置相對于用戶屏幕的 x 坐標(biāo)。 
screenY 設(shè)置或獲取鼠標(biāo)指針位置相對于用戶屏幕的 y 坐標(biāo)。 
x 設(shè)置或獲取鼠標(biāo)指針位置相對于父文檔的 x 像素坐標(biāo)(亦即相對于當(dāng)前窗口)。 
y 設(shè)置或獲取鼠標(biāo)指針位置相對于父文檔的 y 像素坐標(biāo)(亦即相對于當(dāng)前窗口)。

總結(jié):
document.documentElement是html元素,document.body是body元素,document.body.scrollHeight就是文檔的總共高度,不是body的總共高度

原生js的 style屬性只能獲取到行內(nèi)的樣式信息,定義在 css中的是無法獲取到的,如果需要獲取的話用 document.defaultView.getComputedStyle(obj,null)[attr];


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI