document.documentElement.clientHeight
和document.body.clientHeight
之间有什么区别?所有Web浏览器的返回值是否一致,或者每个浏览器的评估结果是否一致?
在我的特定情况下,documentElement
似乎比body
元素的高度更小,这没有意义。为什么会这样?
答案 0 :(得分:14)
document.documentElement
属性为您提供html
元素,而document.body
属性为您提供body
元素。
window.innerHeight
属性返回窗口的高度而不是内容的高度。
不同的浏览器会为这些元素的大小提供不同的值,并且相同的浏览器可能会给您不同的值,具体取决于页面是以Quirks模式还是标准合规模式呈现,以及您使用的是HTML还是XHTML。 html
元素可以表示窗口,也可以表示整个页面。 body
元素可以与html
元素的大小相同,也可以是页面中内容的大小。
html
和body
元素是"魔法"与其他元素不同的元素。在XHTML中,它们被更改为使它们更像真实元素,但仍然有一些东西是"魔术"。例如,body
元素没有自己的背景,而html
和body
共享相同的背景,它总是覆盖整个窗口,即使body
元素没有。
答案 1 :(得分:9)
我想出了这个问题!它与HTML标记之前的DOCTYPE声明有关。没有doctype,documentElement和body实际上是切换的。还要感谢其他人的帮助:D
答案 2 :(得分:3)
让我们问一个好老的萤火虫(为了懒惰,我就是在SO上做的),因为这两个对象之间存在差异:
>>> document.documentElement
<html>
>>> document.body
<body class="question-page">
因此,document.documentElement
指向顶级<html>
元素,而document.body
指向<body>
元素。