天天看點

scrollHeight、clientHeight ,offsetHeight 差別

我認為我們想要兩個東西:

  • 一是 scrollWidth(scrollHeight),雖然它用處不大,但應該比 offsetWidth(offsetHeight)有用得多。它表示的是文檔區的寬度(高度),比如一個網頁,特别是門戶網站,拖很長,就要把沒有顯示出來的内容都計算進去。
  • 二是視口 viewport,就是 clientWidth,就是視窗中可顯示内容的那塊區域,就是我們常常看到頁面上飛行廣告,飛來飛去,碰到邊邊要反彈的那一塊。

測試結果

結果很複雜,就不說了,這裡隻說實際中怎麼使用:

  • 要使用 scrollWidth,取 document.documentElement.scrollWidth 與 document.body.scrollWidth 的最大值;
  • 要使用 clientWidth,如果 document.documentElement.clientWidth > 0,則使用 document.documentElement.clientWidth,否則使用 document.body.clientWidth。

表達式為:

  • var scrollWidth = Math.max(document.documentElement.scrollWidth, document.body.scrollWidth);
  • var clientWidth = document.documentElement.clientWidth || document.body.clientWidth;

clientHeight

大家對 clientHeight 都沒有什麼異議,都認為是内容可視區域的高度,也就是說頁面浏覽器中可以看到内容的這個區域的高度,一般是最後一個工具條以下到狀态欄以上的這個區域,與頁面内容無關。

内容可視區域是指浏覽器最後一個工具條以下到狀态欄以上的區域,與頁面内容無關,如有滾動條的話則排除滾動條所占的區域

offsetHeight

IE、Opera 認為 offsetHeight = clientHeight + 滾動條 + 邊框。

NS、FF 認為 offsetHeight 是網頁内容實際高度,可以小于 clientHeight。

IE和Opera下該值一直等于document.body.clientHeight+滾動條高度+視窗邊框(IE為4,Opera為0)

scrollHeight

IE、Opera 認為 scrollHeight 是網頁内容實際高度,可以小于 clientHeight。

NS、FF 認為 scrollHeight 是網頁内容高度,不過最小值是 clientHeight。

//-----------------------------以上是摘自網友部落格----------------------------------------

//原文部落格位址:http://www.cnblogs.com/wang726zq/archive/2012/05/10/2494256.html

//終極自測方法:需要JSLogger元件,請到日志首頁自行下載下傳。

window.onload = function(){

JSLogger.log("documentElement 的屬性 ");

JSLogger.log(document.documentElement,"height");

JSLogger.log("body 的屬性 ");

JSLogger.log(document.body,"height");

}

繼續閱讀