转自 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;
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差异如下:
02
|
clientWidth = width + padding
|
03
|
clientHeight = height + padding
|
04
|
offsetWidth = width + padding + border
|
05
|
offsetHeight = height + padding +
border
|
07
|
clientWidth = width - border
|
08
|
clientHeight = height - border
|
(需要提一下:CSS中的margin属性,与clientWidth、offsetWidth、clientHeight、offsetHeight均无关)
在设置了文档类型后也可能有差异,以上仅供参考
分享到:
相关推荐
在探讨“火狐、谷歌、IE关于`document.body.scrollTop`和`document.documentElement.scrollTop`以及值为0的问题”这一主题时,我们深入分析了浏览器在处理页面滚动位置时的不同行为,尤其是当滚动位置值始终为0时的...
这段代码首先检查`document.compatMode`,如果为`BackCompat`,那么它使用`document.body`来获取页面尺寸和滚动条信息;如果为`CSS1Compat`,则使用`document.documentElement`。对于滚动条的左右位置`sLeft`和顶部...
对于document.compatMode,很多朋友可能都根我一样很少接触,知道... document.compatMode正好派上用场,它有两种可能的返回值:BackCompat和CSS1Compat,对其解释如下: BackCompat Standards-compliant mode is not s
然后,根据模式选择合适的元素(`document.documentElement` 或 `document.body`)来获取宽度和高度信息。 浏览器的兼容性问题一直是前端开发中的挑战。不同浏览器对CSS和HTML的解析方式可能存在差异,尤其是在老...
这段代码首先检查`document.compatMode`,如果在标准模式下,使用`document.documentElement.clientHeight`获取高度,否则使用`document.body.clientHeight`。这是因为IE在Quirks Mode下,高度是通过`document.body`...
因此,我们可以通过 `document.body.clientWidth` 和 `document.body.clientHeight` 来获取正确的值: ```javascript console.log(document.body.clientWidth); console.log(document.body.clientHeight); ``` ...
如果`document.compatMode`为"CSS1Compat",表示页面处于标准模式,那么宽度和高度应该通过`document.documentElement.clientWidth`和`document.documentElement.clientHeight`获取。否则,如果`document.compatMode...
通过合理运用 `window.pageYOffset`、`document.documentElement.scrollTop` 和 `document.body.scrollTop` 这些关键属性,以及适当的条件判断和逻辑处理,你可以创建出既美观又不影响用户体验的浮动广告。...
- `document.documentElement.scrollLeft` 和 `document.documentElement.scrollTop` 在某些情况下也可以用于获取滚动量,尤其是在文档模式为`CSS1Compat`的情况下。 - `document.body.scrollLeft` 和 `document....
= “number”){ if(document.compatMode == “number”){ pageWidth = document.documentElement.clientWidth; pageHeight = document.documentElement.clientHeight; }else{ pageWidth = document.body.clie
documentElement.scrollTop + (documentElement.clientHeight - this.offsetHeight) / 2 : document.body.scrollTop + (document.body.clientHeight - this.clientHeight) / 2); } .content { background: #f3f3f3...
document.documentElement : document.body; pagex = (isapple == 1 ? 0 : (ie5 ? iebody.scrollLeft : window.pageXOffset)); pagey = (isapple == 1 ? 0 : (ie5 ? iebody.scrollTop : window.pageYOffset)); ...
对于整个网页来说,document.documentElement.clientWidth和document.documentElement.clientHeight(在标准模式下)或document.body.clientWidth和document.body.clientHeight(在quirks模式下)可以用来获取浏览器...
- **`document.documentElement`** 返回当前文档的根节点,通常是 `<html>` 元素。 - **`document.defaultView`** 返回包含该文档的窗口对象(通常为 `window`)。 - **`document.body`** 返回当前文档的 `...
x: window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft, y: window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop }; } ``` 这段代码...
当DOCTYPE存在时,浏览器进入标准模式,此时应该使用`document.documentElement.scrollTop`来设置或获取页面的滚动位置,而不是`document.body.scrollTop`。`document.documentElement`指的是HTML元素,也就是整个...
} else if (document.compatMode === "BackCompat") { width = document.body.clientWidth; height = document.body.clientHeight; } else { width = document.documentElement.clientWidth; height = ...
document.documentElement.scrollTop + (document.documentElement.clientHeight - this.clientHeight) : document.body.scrollTop + (document.body.clientHeight - this.clientHeight)); } <![endif]--> ``` ...
2. **选择正确的body或documentElement对象**:由于IE在标准模式和怪异模式下使用的对象不同,因此需要根据`document.compatMode`来决定使用哪个对象。 3. **获取滚动条位置**:对于IE浏览器,使用`IeTrueBody()....