從第一天開始,這對我來說就是個謎。它依然如此。現在是揭示它的時候了。所以我做了一個test page,其中包含一個div
,這個範圍可以改變。信息面板顯示相關屬性的值。爲簡單起見,我們只需使用Chrome。如何理解html頁面尺寸?
默認body
餘量8px
。 html
的背景爲藍色,body
的綠色,div
爲紅色。在這裏我們可以看到html
的offsetHeight
等於body.offsetHeight + 2 * body.margin
,好像它只是包含body
。但是html.clientHeight
== window.innerHeight
,好像它被拉伸以填充視口。
現在讓我們添加水平滾動條(請div
的寬度1000px
),並滾動到右側位:
html
和body
向左移動。 body
的scrollLeft
與window.pageXOffset
同步更改,就像它擁有滾動條一樣。由於添加了滾動條,html
的clientHeight
發生了變化。
讓我們做它的其他方式(垂直滾動條):
現在無論html
的程度變化(offsetWidth
和clientWidth
)。這表明它不擁有滾動條。
最後,既有滾動條:
好了,在這一點上的東西都或多或少clear給我。至少只要我們只考慮Chrome。但仍然有一些我想知道的事情。
爲什麼
html
的clientHeight
都不可能小於offsetHeight
?有沒有比「只是如此」更好的解釋?爲什麼
body
的scrollLeft
/scrollTop
在我滾動頁面時發生了變化?它不擁有滾動條,是嗎?
此外,一些總結將就位。