`

document.documentElement和document.body的区别

 
阅读更多

网页中获取滚动条卷去部分的高度,可以通过 document.body.scrollTop 来获取,比如使div跟着滚动条滚动:

 

<div id="div" style="width:100px;height:100px;background:#ccc;position:absolute;"></div>
window.onscroll = function ()
{
    var div = document.getElementById("div");
    div.style.top = document.body.scrollTop + "px";
}

 

运行后没有达到预期效果,输出 document.body.scrollTop 的值一看,一直都是 0。一翻折腾,原来是 DTD 的问题,要是页面直接用 <html> 开头的话就没有问题了。但是要符合 web 标准,DTD 当然是不能少的。

如果有 DTD 时用,那就用 document.documentElement.scrollTop 代替 document.body.scrollTop 就可以了。

 

window.onscroll = function ()
{
    var oFix = document.getElementById("divfix");
    oFix.style.top = document.documentElement.scrollTop + "px";
}




DTD相关说明:

 

页面具有 DTD,或者说指定了 DOCTYPE 时,使用 document.documentElement。

页面不具有 DTD,或者说没有指定了 DOCTYPE,时,使用 document.body。

在 IE 和 Firefox 中均是如此。

为了兼容,不管有没有 DTD,可以使用如下代码:

 

var scrollTop = window.pageYOffset  //用于FF
                || document.documentElement.scrollTop  
                || document.body.scrollTop  
                || 0;




documentElement 和 body 相关说明:

 

body是DOM对象里的body子节点,即 <body> 标签;

documentElement 是整个节点树的根节点root,即<html> 标签;

 

DOM把层次中的每一个对象都称之为节点,就是一个层次结构,你可以理解为一个树形结构,就像我们的目录一样,一个根目录,根目录下有子目录,子目录下还有子目录。

以HTML超文本标记语言为例:整个文档的一个根就是,在DOM中可以使用document.documentElement来访问它,它就是整个节点树的根节点。而body是子节点,要访问到body标签,在脚本中应该写:document.body。

青春承载希望,奋斗成就未来
分享到:
评论

相关推荐

    火狐、谷歌、IE关于document.body.scrollTop和document.documentElement.scrollTop 以及值为0的问题

    在探讨“火狐、谷歌、IE关于`document.body.scrollTop`和`document.documentElement.scrollTop`以及值为0的问题”这一主题时,我们深入分析了浏览器在处理页面滚动位置时的不同行为,尤其是当滚动位置值始终为0时的...

    深入解析:`document.documentElement` 与 `document.body` 的差异及其应用

    在JavaScript的DOM操作中,document.documentElement 和 document.body 是两个非常重要的属性,它们分别代表了文档的不同部分。理解这两者之间的区别对于前端开发者来说至关重要,尤其是在进行页面布局和滚动操作时...

    document.documentElement和document.body区别介绍

    在标准模式下,则需要先判断document.documentElement.scrollLeft和document.documentElement.scrollTop是否为0,若是则使用document.body.scrollLeft和document.body.scrollTop。 了解了这些区别后,前端开发者在...

    document.body.scrollTop用法

    - 使用 `event.clientX` 和 `event.clientY` 获取鼠标相对于视口的位置,但若想得到相对于整个文档的位置,则需加上 `document.documentElement.scrollTop` 或 `document.documentElement.scrollLeft`。 ```...

    document.documentElement &amp;&amp; document.documentElement.scrollTop

    在JavaScript中,`document.documentElement` 和 `document.documentElement.scrollTop` 是两个非常重要的属性,它们与网页文档的DOM(Document Object Model)交互,特别是涉及到页面滚动时的行为。本文将深入讲解...

    document.body属性.document.body.scrollTop

    3. **与window对象的scrollY区别**:虽然 `window.scrollY` 和 `document.body.scrollTop` 在很多情况下结果相同,但它们并不完全等价。`window.scrollY` 返回的是整个窗口(包括顶部固定元素)相对于浏览器顶部的...

    解决VUE中document.body.scrollTop为0的问题

    页面指定了DTD,即指定了DOCTYPE时,使用document.documentElement。 页面没有DTD,即没指定DOCTYPE时,使用document.body。 IE和Firefox都是如此。 以上这篇解决VUE中document.body.scrollTop为0的问题就是小编分享...

    用javascript地址栏显示源码

    - 使用`document.write('&lt;body&gt;&lt;/body&gt;')`来清除页面上的所有内容,并重新插入一个空的`&lt;body&gt;`标签。 - 这一步是必要的,因为如果直接修改现有文档的内容而不进行清空操作,可能会导致布局错乱或意料之外的结果。...

    document.documentElement document.documentElement.scrollTop

    if (document.documentElement && document.documentElement.scrollTop) diffY = document.documentElement.scrollTop; else if (document.body) diffY = document.body.scrollTop else {/*Netscape ...

    document.documentElement的一些使用技巧

    下面将详细探讨`document.documentElement`的一些使用技巧和应用场景。 1. 访问根元素属性: `document.documentElement` 可以让我们访问到根元素的属性,比如`nodeName`,它返回元素的标签名(在这个例子中是`...

    Document.body.scrollTop的值总为零的快速解决办法

    在标准模式下,浏览器倾向于使用`document.documentElement.scrollTop`来获取页面的滚动位置,而不是`document.body.scrollTop`。 `document.documentElement` 指的是HTML文档的根元素,即`&lt;html&gt;`标签。在标准模式...

    用document.documentElement取代document.body的原因分析

    上次的测试说明了document.body属性并不会给我们返回预期的结果,比如我们用document.body.clientHeight原本想取得“页面可见区域高度”,可实际上返回的是“页面实际内容高度”。 那我们怎么办呢?难道加上了文档...

    javascript获取滚动条高度 页面宽度与高度

    - 在 Firefox 和 Opera 中,`document.documentElement.clientWidth`和`document.documentElement.clientHeight`分别表示页面宽度减去`BODY`的外边距(`margin`)后的宽度和高度。 为了确保代码的兼容性,开发者在...

    由document.body和document.documentElement想到的

    在Web开发中,理解和掌握`document.body`和`document.documentElement`的区别至关重要,尤其是在处理页面布局和兼容性问题时。这两个对象分别代表了HTML文档的不同部分:`document.body`指的是HTML文档的实际内容...

    javascript 获取网页高度宽度.pdf

    这个函数通过检查 `document.documentElement.scrollTop` 和 `document.body.scrollTop` 来确定滚动条的位置。在不同的浏览器中,这两个属性可能有不同的行为,因此需要进行条件判断来确保兼容性。 ```javascript ...

    document.body.scrollTop 值总为0的解决方法 比较常见的标准问题

    在标准模式下,IE和Firefox等现代浏览器倾向于遵循W3C标准,其中规定应该使用`document.documentElement.scrollTop`来获取整个页面的滚动位置,而不是`document.body.scrollTop`。因此,当你尝试通过`document.body....

    js中的如何定位固定层的位置.docx

    但需要注意的是,对于IE5.5及更高版本,需要特别处理`document.body.scrollLeft`和`document.documentElement.scrollLeft`,以及`document.body.scrollTop`和`document.documentElement.scrollTop`,以确保在所有...

Global site tag (gtag.js) - Google Analytics