clientHeight
和offsetHeight
屬性和元素的滾動取募、位置沒有關(guān)系,它代表元素的高度蟆技。其中:
clientHeight
:
包括padding但不包括border玩敏、水平滾動條、margin的元素的高度质礼。對于inline的元素這個屬性一直是0旺聚,單位px,只讀元素眶蕉。
offsetHeight
:
包括padding砰粹、border、水平滾動條妻坝,但不包括margin的元素的高度伸眶。對于inline的元素這個屬性一直是0,單位px刽宪,只讀元素。
接下來討論出現(xiàn)有滾動條時的情況:
當(dāng)本元素的子元素比本元素高且overflow=scroll時界酒,本元素會scroll圣拄,這時:
scrollHeight
:
因為子元素比父元素高,父元素不想被子元素?fù)蔚囊粯痈呔惋@示出了滾動條毁欣,在滾動的過程中本元素有部分被隱藏了庇谆,scrollHeight代表包括當(dāng)前不可見部分的元素的高度。而可見部分的高度其實就是clientHeight凭疮,也就是scrollHeight>=clientHeight恒成立饭耳。在有滾動條時討論scrollHeight才有意義,在沒有滾動條時scrollHeight==clientHeight恒成立执解。單位px寞肖,只讀元素。
scrollTop
:
代表在有滾動條時衰腌,滾動條向下滾動的距離也就是元素頂部被遮住部分的高度新蟆。在沒有滾動條時scrollTop==0恒成立。單位px右蕊,可讀可設(shè)置琼稻。
要獲取當(dāng)前頁面的滾動條縱坐標(biāo)位置,用:
document.documentElement.scrollTop;
而不是:
document.body.scrollTop;
documentElement 對應(yīng)的是 html 標(biāo)簽饶囚,而 body 對應(yīng)的是 body 標(biāo)簽帕翻。
--
在標(biāo)準(zhǔn)w3c下鸠补,document.body.scrollTop恒為0,需要用document.documentElement.scrollTop來代替;
offsetTop
:
當(dāng)前元素頂部距離最近父元素頂部的距離,和有沒有滾動條沒有關(guān)系嘀掸。單位px莫鸭,只讀元素。