天天看點

差別clientHeight、offsetHeight、scrollHeight、offsetTop、scrollTop

最近在做元件的過程中遇到滾動在切換過程中沒有恢複到頂部,于是發現這幾個容易混淆的屬性。

每個HTML元素都具有clientHeight offsetHeight scrollHeight offsetTop scrollTop 這5個和元素高度、滾動、位置相關的屬性,單憑單詞很難搞清楚分别代表什麼意思之間有什麼差別。

clientHeight

clientHeight

:對于沒有CSS或内聯布局框的元素,

Element.clientHeight

屬性為隻讀且值一直為0;否則,它是元素的内部高度(以px為機關)。它包括

padding

,但不包括

border

margin

和水準滾動條(如果有水準滾動條)

可以将

clientHeight

計算為:

CSS height + CSS padding - height of horizontal scrollbar

(如果有水準滾動條)

【CSS高度+ CSS填充-水準滾動條的高度】

var intElemClientHeight = element.clientHeight;
           

intElemClientHeight

是與元素的

clientHeight

相對應的整數,以px為機關。

clientHeight

屬性為隻讀。

差別clientHeight、offsetHeight、scrollHeight、offsetTop、scrollTop

offsetHeight

offsetHeight

HTMLElement.offsetHeight

的屬性為隻讀,以整數形式傳回元素的高度,包括

vertical padding

borders

【垂直内邊距和邊框】。

通常,

offsetHeight

以px為機關的CSS高度的度量,包括

any borders

,

padding

, 和

horizontal scrollbars

【任何邊框,内邊距和水準滾動條(如果呈現)】。但是不包含僞元素的高度,例

::before

::after

。延伸到其他線性内容以下的浮動元素将被忽略。

如果一個元素是隐藏狀态,即将

style.display

設定為

none

,這個時候為0。

var intElemOffsetHeight = element.offsetHeight;
           
差別clientHeight、offsetHeight、scrollHeight、offsetTop、scrollTop

scrollHeight

scrollHeight

Element.scrollHeight

隻讀屬性是元素内容高度的度量,其中包括由于溢出而在螢幕上不可見的内容。是以

scrollHeight>=clientHeight

是一直成立的。

scrollHeight

值等于元素内容所需的最小高度,以便在不使用垂直滾動條的情況下适合視口中的所有内容。高度的測量方法與

clientHeight

相同:它包括

padding

,但不包括

border

margin

和水準滾動條(如果有水準滾動條)。它還可以包括僞元素的高度,例如

:: before

:: after

。如果元素不需要

vertical scrollbar

【垂直滾動條】就可以容納所有内容,則其

scrollHeight==clientHeight

var intElemScrollHeight = element.scrollHeight;
           

intElemScrollHeight

是一個變量,用于存儲一個與元素的

scrollHeight

像素值相對應的整數。

scrollHeight

屬性是隻讀的。

差別clientHeight、offsetHeight、scrollHeight、offsetTop、scrollTop

offsetTop

offsetTop

HTMLElement.offsetTop

屬性是隻讀,傳回目前元素相對于最近的

offsetParent

父節點頂部的距離。和滾動條沒有關系。

topPos = element.offsetTop;
           

Example:

var d = document.getElementById("div1");
var topPos = d.offsetTop;
 
if (topPos > 10) {
  // object is offset more
  // than 10 pixels from its parent
}
           
差別clientHeight、offsetHeight、scrollHeight、offsetTop、scrollTop

scrollTop

scrollTop

Element.scrollTop

屬性擷取或設定元素内容垂直滾動的px。

有滾動條的時候,

scrollTop

值是從元素頂部到其最頂部可見内容的距離的度量。當元素的内容沒有垂直滾動條時,則

scrollTop=0

差別clientHeight、offsetHeight、scrollHeight、offsetTop、scrollTop
差別clientHeight、offsetHeight、scrollHeight、offsetTop、scrollTop
差別clientHeight、offsetHeight、scrollHeight、offsetTop、scrollTop

官方文檔連結:

clientHeight

offsetHeight

scrollHeight

offsetTop

scrollTop