`

document.body和document.documentElement(转载)

阅读更多

对于document.compatMode,很多朋友可能都根我一样很少接 触,知道他的存在却不清楚他的用途。其实这个对于我们开发兼容性的web页面还是很有帮助,我们都知道,盒模型的渲染在 Standards Mode和Quirks Mode是有很大差别的,在不声明Doctype的情况下,浏览器默认是Quirks Mode。所以为兼容性考虑,我们可能需要获取当前的文档渲染方式。 
document.compatMode正好派上用场,它有两种可能的返回值:BackCompat和CSS1Compat,对其解释如下: 
BackCompat Standards-compliant mode is not switched on. (Quirks Mode) 
CSS1Compat Standards-compliant mode is switched on. (Standards Mode) 
当文档有了标准声明时, document.compatMode 的值就等于 "CSS1compat", 因此, 我们可以根据 document.compatMode 的值来判断文档是否加了标准声明 
var height = document.compatMode=="CSS1Compat" ? document.documentElement.clientHeight : document.body.clientHeight; 
当文档有了标准声明时火狐的style.top等等的设置必须加上“px”等单位,否则它不会认。既然已经说道了这,再展开一下。对于火狐: 
一、offsetTop 返回的是数字,而 style.top 返回的是字符串,除了数字外还带有单位:px。 
二、offsetTop 只读,而 style.top 可读写。 
三、如果没有给 HTML 元素指定过 top 样式(即使在css中设定也不行),则 style.top 返回的是空字符串。 
offsetLeft 与 style.left、offsetWidth 与 style.width、offsetHeight 与 style.height 也是同样道理。 
再说说他们的区别吧: 
下面这段大家可能都见到过,在网上被转载过很多次,在这我也借用一下: 
.Kfk428 { display:none; } 
网页可见区域宽: document.body.clientWidth; 
网页可见区域高: document.body.clientHeight; 
网页可见区域宽: document.body.offsetWidth (包括边线的宽); 
网页可见区域高: document.body.offsetHeight (包括边线的宽); 
网页正文全文宽: document.body.scrollWidth; 
网页正文全文高: document.body.scrollHeight; 
网页被卷去的高: document.body.scrollTop; 
网页被卷去的左: document.body.scrollLeft; 
网页正文部分上: window.screenTop; 
网页正文部分左: window.screenLeft; 
屏幕分辨率的高: window.screen.height; 
屏幕分辨率的宽: window.screen.width; 
屏幕可用工作区高度: window.screen.availHeight; 
屏幕可用工作区宽度:window.screen.availWidth;

scrollHeight: 获取对象的滚动高度。 
scrollLeft:设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离 
scrollTop:设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离 
scrollWidth:获取对象的滚动宽度 
offsetHeight:获取对象相对于版面或由父坐标 offsetParent 属性指定的父坐标的高度 
offsetLeft:获取对象相对于版面或由 offsetParent 属性指定的父坐标的计算左侧位置 
offsetTop:获取对象相对于版面或由 offsetTop 属性指定的父坐标的计算顶端位置 
event.clientX 相对文档的水平座标 
event.clientY 相对文档的垂直座标 
event.offsetX 相对容器的水平坐标 
event.offsetY 相对容器的垂直坐标 
document.documentElement.scrollTop 垂直方向滚动的值 
event.clientX+document.documentElement.scrollTop 相对文档的水平座标+垂直方向滚动的量 
以上主要指IE之中,FireFox差异如下: 
IE6.0、FF1.06+: 
clientWidth = width + padding 
clientHeight = height + padding 
offsetWidth = width + padding + border 
offsetHeight = height + padding + border 
IE5.0/5.5: 
clientWidth = width - border 
clientHeight = height - border 
offsetWidth = width 
offsetHeight = height 
(需要提一下:CSS中的margin属性,与clientWidth、offsetWidth、clientHeight、offsetHeight均无关)

分享到:
评论

相关推荐

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

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

    document.body属性.document.body.scrollTop

    5. **浏览器兼容性**:虽然大部分现代浏览器都支持 `document.body.scrollTop`,但在一些老版本的IE浏览器中可能需要使用 `document.documentElement.scrollTop` 来兼容。 6. **CSS替代方案**:有时候,为了避免...

    document.body.scrollTop用法

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

    深入解析:`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。 了解了这些区别后,前端开发者在...

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

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

    document.documentElement && document.documentElement.scrollTop

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

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

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

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

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

    用javascript地址栏显示源码

    2. **第二步**:`s=document.documentElement.outerHTML;` 这一行将整个HTML文档的源代码存储到了变量`s`中。 3. **第三步**:`document.write('<body></body>');` 这一行会清除当前页面的所有内容,并写入一个新的...

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

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

    由document.body和document.documentElement想到的

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

    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 ...

    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`,以确保在所有...

    获取页面长宽和滚动条的位置

    } else if (document.documentElement && document.documentElement.clientHeight) { // IE 6 Strict Mode winW = document.documentElement.clientWidth; winH = document.documentElement....

Global site tag (gtag.js) - Google Analytics