主要是理清scrollHeight、clientHeight、offsetHeight、scrollTop、offsetTop,先前一直混淆不清。
css
html: body{ height:2700px; } div{ height:2600px; width:2400px; background: tan; } html: <div> </div>
顯示效果
在chrome裏面看html與body兩個的屬性測量。
body結果以下
html結果以下
html
document.body.style.height
。它是比較特殊的一個值,由於它屬性對象的style對象的一個成員,它的值是一個String,而其它的值都是Int類型的。不過這種調用方式只能獲得行內樣式。要想獲得真實的height屬性,就要使用getComputedStyle(document.body).height了。IE是使用currentSytle,因此要作個選擇操做。document.body.clientHeight
爲2700px,而若是設置body的css爲{padding:0,margin:0}的話,則會獲得2716。緣由是body的margin爲8px。而後就某一個設置了overflow:scroll的div元素來測試。chrome
css: div#d{ width:160px; height:160px; border: solid black 30px; padding:30px; margin:30px; overflow: scroll; } html: <div id='d'>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Obcaecati asperiores, saepe rerum maiores id iste doloremque quia. Veniam praesentium odio excepturi ducimus quisquam vel cumque harum adipisci tempore, fuga, aut?</div>
顯示的結果以下瀏覽器
而後在chrome下看3個height的值測試
而在FF下分別是19六、280、324。
而後發現padding對三個height值全是有影響的(註釋了padding三個值全減了60,但在FF下scrollHeight只減了30左右,變成293,很其怪,不過chrome根據個人測試chrome的結果始終是合理的),而margin全無效。
而後分別註釋其餘語句,最終的結論是:ui
兩個top的值也是挻好理解的。code
offsetParent
是當前元素最近的採用了非靜止定位的祖先元素。若是不存在這樣的祖先元素,那麼offsetParent就是body。offsetParent
是一個很重要的概念!!!要想明確各類浮動和定位等的關係就要準確的找出各個元素的非靜止定位的祖先元素。很氣的就是,雖然看到許多文章都寫了這些內容,但好多錯的啊!!而後只能本身動手了。htm