`

转 document.body和document.documentElement,document.compatMode的关系

    博客分类:
  • js
阅读更多

转自 http://www.seobye.com/div-css/90

 

对于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;

1 < a href = "http://www.seobye.com/wp-content/uploads/2010/01/jsw3c.gif " >< img src = "http://www.seobye.com/wp-content/uploads/2010/01/jsw3c-300x296.jpg " alt = "" title = "jsw3c" width = "300" height = "296" class = "aligncenter size-medium wp-image-89" /></ a >

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差异如下:

01 IE6.0、FF1.06+:
02 clientWidth = width + padding
03 clientHeight = height + padding
04 offsetWidth = width + padding + border
05 offsetHeight = height + padding + border
06 IE5.0/5.5:
07 clientWidth = width - border
08 clientHeight = height - border
09 offsetWidth = width
10 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时的...

    javascript document.compatMode兼容性

    这段代码首先检查`document.compatMode`,如果为`BackCompat`,那么它使用`document.body`来获取页面尺寸和滚动条信息;如果为`CSS1Compat`,则使用`document.documentElement`。对于滚动条的左右位置`sLeft`和顶部...

    由document.body和document.documentElement想到的

    对于document.compatMode,很多朋友可能都根我一样很少接触,知道... document.compatMode正好派上用场,它有两种可能的返回值:BackCompat和CSS1Compat,对其解释如下: BackCompat Standards-compliant mode is not s

    document.compatMode的CSS1compat使用介绍

    然后,根据模式选择合适的元素(`document.documentElement` 或 `document.body`)来获取宽度和高度信息。 浏览器的兼容性问题一直是前端开发中的挑战。不同浏览器对CSS和HTML的解析方式可能存在差异,尤其是在老...

    document.compatMode介绍

    这段代码首先检查`document.compatMode`,如果在标准模式下,使用`document.documentElement.clientHeight`获取高度,否则使用`document.body.clientHeight`。这是因为IE在Quirks Mode下,高度是通过`document.body`...

    【JavaScript源代码】JavaScript获取网页的宽高及如何兼容详解.docx

    因此,我们可以通过 `document.body.clientWidth` 和 `document.body.clientHeight` 来获取正确的值: ```javascript console.log(document.body.clientWidth); console.log(document.body.clientHeight); ``` ...

    取得窗口大小 兼容所有浏览器的js代码.docx

    如果`document.compatMode`为"CSS1Compat",表示页面处于标准模式,那么宽度和高度应该通过`document.documentElement.clientWidth`和`document.documentElement.clientHeight`获取。否则,如果`document.compatMode...

    js浮动广告实现

    通过合理运用 `window.pageYOffset`、`document.documentElement.scrollTop` 和 `document.body.scrollTop` 这些关键属性,以及适当的条件判断和逻辑处理,你可以创建出既美观又不影响用户体验的浮动广告。...

    获取鼠标在页面上的位置(包括滚动条)

    - `document.documentElement.scrollLeft` 和 `document.documentElement.scrollTop` 在某些情况下也可以用于获取滚动量,尤其是在文档模式为`CSS1Compat`的情况下。 - `document.body.scrollLeft` 和 `document....

    取得窗口大小 兼容所有浏览器的js代码

    = “number”){ if(document.compatMode == “number”){ pageWidth = document.documentElement.clientWidth; pageHeight = document.documentElement.clientHeight; }else{ pageWidth = document.body.clie

    js+css 实现遮罩居中弹出层(随浏览器窗口滚动条滚动).docx

    documentElement.scrollTop + (documentElement.clientHeight - this.offsetHeight) / 2 : document.body.scrollTop + (document.body.clientHeight - this.clientHeight) / 2); } .content { background: #f3f3f3...

    javascript弹出带文字信息的提示框效果_.docx

    document.documentElement : document.body; pagex = (isapple == 1 ? 0 : (ie5 ? iebody.scrollLeft : window.pageXOffset)); pagey = (isapple == 1 ? 0 : (ie5 ? iebody.scrollTop : window.pageYOffset)); ...

    用Javascript 获取页面元素的位置的代码

    对于整个网页来说,document.documentElement.clientWidth和document.documentElement.clientHeight(在标准模式下)或document.body.clientWidth和document.body.clientHeight(在quirks模式下)可以用来获取浏览器...

    javascriptDom节点API个人总结.docx

    - **`document.documentElement`** 返回当前文档的根节点,通常是 `&lt;html&gt;` 元素。 - **`document.defaultView`** 返回包含该文档的窗口对象(通常为 `window`)。 - **`document.body`** 返回当前文档的 `...

    【JavaScript源代码】JavaScript实现跟随广告的示例代码.docx

    x: window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft, y: window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop }; } ``` 这段代码...

    解决vue无法设置滚动位置的问题

    当DOCTYPE存在时,浏览器进入标准模式,此时应该使用`document.documentElement.scrollTop`来设置或获取页面的滚动位置,而不是`document.body.scrollTop`。`document.documentElement`指的是HTML元素,也就是整个...

    【JavaScript源代码】JavaScript实现楼层效果.docx

    } else if (document.compatMode === "BackCompat") { width = document.body.clientWidth; height = document.body.clientHeight; } else { width = document.documentElement.clientWidth; height = ...

    jquery博客实现底部固定类似人人校内似的

    document.documentElement.scrollTop + (document.documentElement.clientHeight - this.clientHeight) : document.body.scrollTop + (document.body.clientHeight - this.clientHeight)); } &lt;![endif]--&gt; ``` ...

    解决多种浏览器获取滚动条高度

    2. **选择正确的body或documentElement对象**:由于IE在标准模式和怪异模式下使用的对象不同,因此需要根据`document.compatMode`来决定使用哪个对象。 3. **获取滚动条位置**:对于IE浏览器,使用`IeTrueBody()....

Global site tag (gtag.js) - Google Analytics