clientHeight—scrollHeight—offsetHeight三者的區別

 

  clientHeightscrollHeightoffsetHeight 這三個dom屬性有時讓人以爲類似但又不類似瀏覽器

  之前對它們的理解也有一些模糊,如今總結一下,方便之後複習dom

 

  clientHeight:可視區域高度,也可理解爲設備屏幕一屏的高度(不包括滾動條和工具欄)工具

  

 

  scrollHeight:實際內容高度(不包括滾動條和工具欄)spa

          若內容超出後出現滾動條,拉到底部,底部到頂部的高度就是scrollHeight,若內容沒有超出,則scrollHeight=clientHeightcode

          以下動圖控制檯所示,clientHeight = 939,而scrollHeight = 3880,即藍色區域全部內容的高度  blog

  

   offsetHeight: 元素的實際高度(實際高度=border+padding+height)get

   好比下圖bodyclientHeightscrollHeight都爲939,而offsetHeight126class

   

 

   加上1像素border後,高度變爲128兼容性

  

 

   加上10像素的padding後,高度變爲148cli

  

 

   

  補充:

  ①:下面2種方式均可得到元素垂直滾動的距離,但不一樣瀏覽器中不是2種方法都支持,

    好比谷歌支持第1(document.documentElement.scrollTop),因此第2種(document.body.scrollTop)獲取滾動距離爲0

  

  ②:通常獲取瀏覽器clientHeight,scrollHeight,offsetHeight,scrollTop等屬性會有一個兼容性寫法,

    瀏覽器會自動匹配下面任意一種方式,若只寫其中一種,則可能報錯。固通常推薦下面寫法

  var w = document.documentElement.offsetWidth || document.body.offsetWidth;
    var h = document.documentElement.offsetHeight || document.body.offsetHeight;
相關文章
相關標籤/搜索