`
yuyongkun4519
  • 浏览: 44581 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

clientHeight、offsetHeight、scrollHeight、clientWidth、offsetWidth 和 scrollWidth 的解释

 
阅读更多
四种浏览器对 clientHeight、offsetHeight、scrollHeight、clientWidth、offsetWidth 和 scrollWidth 的解释差异
2010-07-09 16:26 448人阅读 评论(0) 收藏 举报
网页可见区域宽: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

这里说说四种浏览器对 document.body 的 clientHeight、offsetHeight 和 scrollHeight 的解释。

这四种浏览器分别为IE(Internet Explorer)、NS(Netscape)、Opera、FF(FireFox)。

clientHeight
四种浏览器对 clientHeight 的解释都没有什么异议,都认为是内容可视区域的高度,也就是说页面浏览器中可以看到内容的这个区域的高度,一般是最后一个工具条以下到状态栏以上的这个区域,与页面内容无关。

offsetHeight
IE、Opera 认为 offsetHeight = clientHeight + 滚动条 + 边框。
NS、FF 认为 offsetHeight 是网页内容实际高度,可以小于 clientHeight。

scrollHeight
IE、Opera 认为 scrollHeight 是网页内容实际高度,可以小于 clientHeight。
NS、FF 认为 scrollHeight 是网页内容高度,不过最小值是 clientHeight。

简单地说
clientHeight 就是透过浏览器看内容的这个区域高度。
NS、FF 认为 offsetHeight 和 scrollHeight 都是网页内容高度,只不过当网页内容高度小于等于 clientHeight 时,scrollHeight 的值是 clientHeight,而 offsetHeight 可以小于 clientHeight。
IE、Opera 认为 offsetHeight 是可视区域 clientHeight 滚动条加边框。scrollHeight 则是网页内容实际高度。

同理
clientWidth、offsetWidth 和 scrollWidth 的解释与上面相同,只是把高度换成宽度即可。


注:以上也是转的,对自己有点参考而已,有些值要跟据页面方式而定!我用的Ajax就完全没法用上面的方法定高!

JavaScript窗口属性:
网页可见区域宽: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


在IE、FireFox、Opera下都可以使用
document.body.clientWidth
document.body.clientHeight
即可获得,很简单,很方便。
而在公司项目当中:
Opera仍然使用
document.body.clientWidth
document.body.clientHeight
可是IE和FireFox则使用
document.documentElement.clientWidth
document.documentElement.clientHeight
原来是W3C的标准在作怪啊
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">




























1. clientHeight和offsetHeight的值由什么决定?

假如我们有以下的DIV,主要显示的文字为"This is the main body of DIV"。









如上图所示,clientHeight的值由DIV内容的实际高度和CSS中的padding值决定,而offsetHeight的值由DIV内容的实际高度,CSS中的padding值,scrollbar的高度和DIV的border值决定;至于CSS中的margin值,则不会影响clientHeight和offsetHeight的值。



2. CSS中的Height值对clientHeight和offsetHeight有什么影响?

首先,我们看一下CSS中Height定义的是什么的高度。如在本文最后部分“APPENDIX示例代码”(注:以下称为“示例代码”)中,innerDIVClass的Height值设定为50px,在IE下计算出来的值如下所示。也就是说,在IE里面,CSS中的Height值定义了DIV包括padding在内的高度(即offsetHeight的值);在Firefox里面,CSS中的Height值只定义的DIV实际内容的高度,padding并没有包括在这个值里面(70 = 50 + 10 * 2)。



in IE:
innerDiv.clientHeight: 46
innerDiv.offsetHeight: 50
outerDiv.clientHeight: 0
outerDiv.offsetHeight: 264

in Firfox:
innerDiv.clientHeight: 70
innerDiv.offsetHeight: 74
outerDiv.clientHeight: 348
outerDiv.offsetHeight: 362




在上面的示例中,也许你会很奇怪,为什么在IE里面outerDiv.clientHeight的值为0。那是因为示例代码中,没有定义outerDIVClass的Height值,这时,在IE里面,则clientHeight的值是无法计算的。同样,在示例代码中,如果将innerDIVClass中的Height值去年,则innerDIV.clientHeight的值也为0。(注:在Firefox下不存在这种情况)。

如果CSS中Height值小于DIV要显示内容的高度的时候呢(当CSS中没有定义overflow的行为时)?在IE里面,整个clientHeight(或者offsetHeight)的值并没有影响,DIV会自动被撑大;而在Firefox里面,DIV是不会被撑开的。如在示例代码中,将innerDivClass的Height值设为0,则计算结果如下所示。IE里面的DIV被撑开,其clientHeight值等于内容的高度与padding*2的和;而Firefox里面,文字将溢出DIV的边界,其clientHeight值正好是padding值的两倍。


  In IE:
innerDiv.clientHeight: 38
innerDiv.offsetHeight: 42
outerDiv.clientHeight: 0
outerDiv.offsetHeight: 256

In Firefox:
innerDiv.clientHeight: 20
innerDiv.offsetHeight: 24
outerDiv.clientHeight: 298
outerDiv.offsetHeight: 312



APPENDIX 示例代码


<html>
<head>
<style type="text/css">......
.innerDivClass
{...}{...}{...}{
      color: red;
      margin: 37px;
      padding: 10px;
      border: 2px solid #000000;
      height: 50px;


}
.outerDivClass
{...}{...}{...}{
      padding: 100px;
      margin: 200px;
      border: 7px solid #000000;
}
</style>

<script>......
function checkClientHeight()
......{
      var innerDiv = document.getElementById("innerDiv");
      var outerDiv = document.getElementById("outerDiv");

      result.innerHTML = "innerDiv.clientHeight: " + innerDiv.clientHeight + "<br />";
      result.innerHTML += "innerDiv.offsetHeight: " + innerDiv.offsetHeight + "<br />";
      result.innerHTML += "outerDiv.clientHeight: " + outerDiv.clientHeight + "<br />";
      result.innerHTML += "outerDiv.offsetHeight: " + outerDiv.offsetHeight + "<br />";
}
</script>
</head>
<body>
<div id="outerDiv" class="outerDivClass">
<div class="innerDivClass" id="innerDiv">
Hello world.         
</div>
</div>
<p></p>
<div id="result">
</div>
<input type="button" onclick="checkClientHeight()" text="Click Me" Value="Click Me" />
</body>
</html>
分享到:
评论

相关推荐

    clientHeight offsetHeight scrollHeight clientWidth详解

    在探讨`clientHeight`, `offsetHeight`, `scrollHeight`, `clientWidth`, `offsetWidth`, 和 `scrollWidth`这些概念之前,我们首先需要理解它们在Web开发中的重要性。这些属性帮助开发者了解和控制网页在不同浏览器...

    分析clientHeight、offsetHeight、scrollHeight

    此外,`clientWidth`、`offsetWidth`和`scrollWidth`与上述三个属性类似,只是对应元素的宽度。理解这些属性的差异和用途,能够帮助开发者更好地控制网页元素的布局和交互,提高用户体验。 总的来说,`clientHeight...

    clientHeight

    ### 四种浏览器对_clientHeight、offsetHeight、scrollHeight、clientWidth、offsetWidth 和_scrollWidth 的解析 在前端开发过程中,我们经常会遇到需要获取页面元素尺寸的情况,这其中包括了元素的高度(`...

    07-offsetHeight-scrollHeight-clientHeight-区别.md

    总结来说,offsetHeight和offsetWidth关注的是元素的边界,而clientHeight和clientWidth关注的是元素内容的大小,scrollHeight和scrollWidth关注的是元素内容的实际大小。理解这些概念,对于编写符合布局需求的CSS...

    HTML:scrollLeft,scrollWidth,clientWidth,offsetWidth完全详解

    **scrollHeight** 和 **scrollWidth** 分别用来获取一个元素的滚动高度和滚动宽度。 - **scrollHeight**: 获取的是元素内容的高度加上其内边距(padding)和滚动条(如果有的话)的高度,但不包括边框(border)。...

    javascript获取设置div的高度和宽度兼容任何浏览器.docx

    - **现代浏览器**:`offsetHeight`, `offsetWidth`, `clientHeight`, `clientWidth`, `scrollHeight`, `scrollWidth` 均支持。 - **Internet Explorer**:除了 `clientHeight` 和 `clientWidth` 外,其他属性也均...

    javascript中的offsetWidth、clientWidth、innerWidth及相关属性方法

    在JavaScript中,DOM元素的尺寸和位置是网页布局的关键因素,`offsetWidth`、`clientWidth`、`innerWidth`以及一系列相关属性方法用于获取和处理这些信息。这些属性可以帮助开发者精确地控制页面元素的显示效果,...

    获取页面元素实际宽高的属性的使用

    通过上述介绍,我们可以看到`clientWidth`、`clientHeight`、`scrollWidth`、`scrollHeight`、`offsetWidth`和`offsetHeight`等属性在前端开发中的重要性。合理使用这些属性可以帮助我们更精确地控制页面布局和元素...

    javacript猎取当前屏幕大小_.docx

    对于浏览器兼容性问题,`clientWidth`、`clientHeight`、`offsetWidth`和`offsetHeight`在不同浏览器中可能有不同的计算方式。在IE6.0及更早版本,`clientWidth`和`clientHeight`会减去边框宽度,而在Firefox 1.0.6+...

    JS获取浏览器的高度和宽度

    在定位元素时,还可以使用`scrollLeft`、`scrollWidth`、`clientWidth`、`offsetWidth`等属性,以及`event`对象的相关属性,如`clientX`、`clientY`、`offsetX`、`offsetY`等,帮助我们精确地计算元素的位置和相对...

    JS里各种宽度和高度的句柄

    1. `offsetWidth` 和 `offsetHeight`:这两个属性返回元素的整体宽度和高度,包括内边距(padding)和边框(border)。它们包含了元素自身的宽度和高度,加上左右边框和上下内边距。 2. `clientWidth` 和 `...

    Js中 关于top、clientTop、scrollTop、offsetTop等

    此时,我们可以使用`offsetHeight`和`offsetWidth`来获取容器的完整尺寸,而使用`clientHeight`和`clientWidth`来获取容器的实际可视区域大小。同时,通过`scrollHeight`和`scrollWidth`我们可以知道容器中所有内容...

    js获取浏览器高度和宽度值(多浏览器)

    - `document.body.scrollWidth` 和 `document.body.scrollHeight` 分别表示网页的完整宽度和高度,即使内容超过当前视口。 - `document.body.scrollTop` 和 `document.body.scrollLeft` 用于获取当前滚动条的位置。 ...

    javascript窗口宽高,鼠标位置,滚动高度(详细解析)

    - `scrollHeight`、`scrollWidth`、`clientWidth`、`clientHeight`、`offsetWidth` 和 `offsetHeight` 这些属性可以帮助我们精确地定位页面元素。 - `scrollHeight` 和 `scrollWidth` 返回元素的总高度和宽度,...

    JS获取各种宽度、高度的简单介绍

    首先,scrollWidth和scrollHeight属性用于获取元素的滚动宽度和滚动高度。scrollWidth获取的是元素内部的总宽度,不包括边框和滚动条,而scrollHeight获取的是元素内部的总高度,同样不包括边框和滚动条。当元素内容...

    offset等.tx

    此外,JavaScript中的DOM属性如`offsetWidth`、`clientWidth`和`scrollWidth`等,对于理解和操作网页元素的尺寸和位置至关重要。了解这些概念有助于开发人员在不同的编程环境下高效地处理数据和界面布局问题。

    js常用的dom高度长度详细

    - `clientWidth` 和 `clientHeight` 是元素的内部宽度和高度,不包括边框和外边距,但在IE6和更低版本中,不包括内边距。 - `scrollWidth` 和 `scrollHeight` 如前述,表示元素的总宽度和高度,包括不可见部分。 ...

    前端vue.js

    2. **`offsetHeight` 和 `offsetWidth`** - 获取元素的高度和宽度,包括滚动条和边框。 ```javascript var w = document.documentElement.offsetWidth; // 包括滚动条和边框 var h = document.documentElement...

Global site tag (gtag.js) - Google Analytics