js中clientHeight,offsetHeight,scrollHeight的區別

一 clientHeight,offsetHeight,scrollHeight的區別javascript

  clientHeight在各個瀏覽器中基本是同樣的,一致認爲是內容可視區域的高度,也就是說頁面瀏覽器中能夠看到內容的這個區域的高度,不包括滾動條,不包括margin,但包括padding,也就是說實際的clientHeight = 當前對象可視區域的高度 + padding值,以下圖所示 clientHeight = 對象可視區域高度(300) + 上下padding值(20) = 320java

在不一樣瀏覽器都實用的javascript方案:瀏覽器

var w= document.documentElement.clientWidth || document.body.clientWidth;
var h= document.documentElement.clientHeight || document.body.clientHeight;

  offsetHeight = 當前對象的高度 + 滾動條 + borde值 + padding值,上圖中當前對象的高度和可視區域高度是同樣的,因此offsetHeight = 300 + padding(20px ) + border(10px)  = 330spa

  scrollHeight是網頁內容的實際高度,最小值就是clientHeight,也就是說能夠是跟clientHeight相等的,但咱們假設這樣一個情形,以下代碼所示,父div高度是300px,子div高度是500px,這時候就會造成滾動條,此時父div的結構圖以下:對象

  

  父div的的scrollHeight 就應該是 scrollHeight = 500px + padding值blog

  由於此時產生了滾動條,此時父div的可視區域高度爲283,當前對象高度也就是父div的高度爲300,所以clientHeight = 283px + padding值(20px) = 303pxip

     offsetHeight = 父div的高度(300px) + padding值(20px) + 邊框(10px) = 330pxcli

<div id="parent" style="padding:10px;border:5px red solid;height:300px;width:200px;overflow:auto">
    <div style="height:500px;width:400px"></div>
</div>

二 clientTop,offsetTop,scrollTop的區別

  clientTop的理解能夠參考clientHeight,clientHeight的的計算方式是當前可視區域的高度 加上 padding值,那麼clientTop就能夠理解爲當前可視區域到上一級元素的距離scroll

 如上圖所示,clientTop就是5px,大部分狀況下,clientTop都是這個border值。im

  offsetTop是當前對象到body元素的距離,它的計算方式相對複雜,先從上圖進行理解,當前對象指的是border邊框以內的區域,因此計算offsetTop要從當前對象的margin開始,計算公式以下 offsetTop = 當前對象的margin-top + 當前對象全部上級元素的margin-top + 當前對象全部上級元素的border-top,須要注意的是offsetTop是不能進行直接賦值的,只能經過這樣的計算方式獲得

  scrollTop是當前對象的最頂部到當前對象在當前窗口顯示的範圍內的頂邊的距離.便是在出現了縱向滾動條的狀況下,滾動條拉動的距離.

相關文章
相關標籤/搜索