1. 程式人生 > >[DOM基礎]offsetHeight,clientHeight,scrollHeight,innerHeight,outerHeight等屬性的解釋

[DOM基礎]offsetHeight,clientHeight,scrollHeight,innerHeight,outerHeight等屬性的解釋

由於經常搞混這幾個屬性,所以查詢資料總結一下,方便以後翻出來溫習。

一、偏移量-以offset開頭的

  1、offsetHeight:元素在垂直方向上佔用的空間大小,畫素。包括元素的高度、可見的水平滾動條的高度、上邊框高度和下邊框高度

  2、offsetWidth:同上,水平上佔用的空間。

  3、offsetLeft:元素的左外邊框至包含元素的左內邊框的距離。

  4、offsetTop:同上,上部的距離。

  包含元素的引用儲存在offsetParent屬性中,不一定是parentNode,比如<td>的offsetParent是<table>,因為它是DOM層次中距<td>最近的一個具有大小的元素

  

  所有的偏移量屬性都是只讀的,而且每次訪問都要重新計算,避免重複訪問。

二、客戶區大小-以client開頭的

  1、clientHeight:內容區+內邊距的高度。

  2、clientWidth:同上,寬度。

  

  這兩個屬性也是隻讀和需要重新計算的。

三、滾動大小-scroll開頭的

  1、scrollHeight:元素內容的總高度

  2、scrollWidth:總寬度。

  3、scrollLeft:被隱藏在內容區域左側的畫素數。通過設定這個屬性可以改變滾動位置

  4、scrollTop:被隱藏在內容區域上方的畫素數。可以設定。

  

四、innterHeight和outerHeight

  1、innerHeight:瀏覽器視窗的視口(viewport)高度(以畫素為單位),如果存在水平滾動條,則包括它。

  2、innerWidth:同上,寬度。

  3、outerHeight:獲取整個瀏覽器視窗的高度(單位:畫素),包括側邊欄(如果存在)、視窗鑲邊(window chrome)和視窗調正邊框(window resizing borders/handles)。

  4、outerWidth:同上,寬度。

五、常用屬性

  1、獲取瀏覽器視口高度:

window.innerHeight;
document.documentElement.clientHeight
document.body.clientHeight
document.documentElement.offsetHeight 
// 僅在html元素無邊框的情況下

  2、視口是否滾動到底部

document.documentElement.scrollHeight - document.documentElement.scrollTop === document.documentElement.clientHeight

六、其他

  對於以上屬性,某些低版本瀏覽器可能會有怪異的表現,這裡沒有考慮(主要是低版本IE)。

  資料來源:JS高階程式設計、MDN