`
hejianhuacn
  • 浏览: 70063 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

scrollHeight scrollWidth clientHeight clientWidth

阅读更多

很多时候需要获得当前浏览器窗口大小,以获得好的页面布局,查查帮助无非就是:

 

document.body.scrollHeight 
document.body.scrollWidth 
document.body.clientHeight 
document.body.clientWidth
document.documentElement.scrollHeight
document.documentElement.scrollWidth
document.documentElement.clientHeight
document.documentElement.clientWidth

 在使用上面的方法时必须得注意,文档是否定义了DOCTYPE,检测是否定义DOCTYPE使用:

 

document.compatMode

 
其返回两种类型:BackCompat,CSS1Compat , 当文档类型定义了DOCTYPE时返回CSS1Compat

文档定义了DOCTYPE时使用:

document.documentElement.scrollHeight 
document.documentElement.scrollWidth 
document.documentElement.clientHeight 
document.documentElement.clientWidth

 否则使用:

document.body.scrollHeight 
document.body.scrollWidth
document.body.clientHeight 
document.body.clientWidth

 但是,问题远没有这么简单,看看这个简单的页面的效果:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
		<title>scrollHeight,clientHeight,scrollWidth,clientWidth</title> 
		<script type="text/javascript" language="javascript"> 
			function but_click1() 
			{ 
				alert((document.compatMode != "CSS1Compat") ? document.body.scrollHeight : document.documentElement.scrollHeight); 
			} 
			function but_click2() 
			{ 
				alert((document.compatMode != "CSS1Compat") ? document.body.clientHeight : document.documentElement.clientHeight); 
			} 
			function but_click3() 
			{ 
				alert((document.compatMode != "CSS1Compat") ? document.body.scrollWidth : document.documentElement.scrollWidth); 
			} 
			function but_click4() 
			{ 
				alert((document.compatMode != "CSS1Compat") ? document.body.clientWidth : document.documentElement.clientWidth); 
			} 
		</script> 
	</head> 
	<body style="margin:0;overflow-x:hidden;overflow-y:hidden"> 
		<input type="button" height=40px onclick="but_click2()" value="clientHight" > 
		<br> 
		<input type="button" height=40px onclick="but_click4()" value="clientWidth" > 
		<br> 
		<input type="button" height=40px onclick="but_click1()" value="scrollHeight" > 
		<br> 
		<input type="button" height=40px onclick="but_click3()" value="scrollWidth" > 
	</body> 
</html>

 

    这个页面使用不同的浏览器打开,在ie7下无论是否定义DOCTYPE,scrollHeight获得的值都不会变化;同样FF也没有影响;只有对chrome有影响。当你实际运行上面的代码时,你还会发现3种浏览器中获得的值居然也不同!

    结果大致是这样:
         scrollHeight
         有文档类型定义
             在chrome 返回的是页面控件高度的和
             在ie下   返回的是页面控件高度的和
             在firefox 下返回整个窗口高度
         scrollHeight
         没有文档类型定义
             在chrome 返回整个窗口实际高度
             在ie     返回的是页面控件高度的和
             在firefox下返回整个窗口高度

 

    scrollWidth 在有无DOCTYPE还是在不同浏览器上结果基本一致,IE偏小,不知道是不是右侧的scrollbar影响了结果,我猜的^_^

    也就是说无论在有无DOCTYPE定义的页面,在ie下用scrollHeight获得不了窗口高度,这时候就需要使用clientHeight来获得窗口高度!clientHeight效果基本一致。

    反正我也说不明白那个浏览器更遵守规范,它们只会让你头疼。现在终于明白了为什么每次需求讨论都会头疼呢,写浏览器的大牛们对规范理解还有这么大偏差,何况同样的事由不同的人去描述,更何况里面还有鸟人呢!

分享到:
评论

相关推荐

    clientHeight offsetHeight scrollHeight clientWidth详解

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

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

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

    clientHeight

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

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

    #### 一、scrollHeight 和 scrollWidth **scrollHeight** 和 **scrollWidth** 分别用来获取一个元素的滚动高度和滚动宽度。 - **scrollHeight**: 获取的是元素内容的高度加上其内边距(padding)和滚动条(如果有...

    分析clientHeight、offsetHeight、scrollHeight

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

    JS中位置与大小的获取方法

    首先,我们来了解几个重要的DOM属性,它们分别是:scrollHeight、clientHeight、offsetHeight、scrollWidth、clientWidth和offsetWidth。这些属性帮助我们获取元素内容的高度和宽度,以及元素自身整体的高度和宽度。...

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

    1. `clientWidth`和`clientHeight`: - `clientWidth`表示一个元素内容区域的宽度,不包括滚动条、边框,但包括内边距(padding)。它等于元素的宽度加上左右内边距。 - `clientHeight`类似,表示内容区域的高度,...

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

    本文将详细介绍`clientWidth`、`clientHeight`、`scrollWidth`、`scrollHeight`、`offsetWidth`、`offsetHeight`等属性及其应用场景。 #### `clientWidth` 和 `clientHeight` - **定义**:`clientWidth`用于获取...

    doctype后如何获得body.clientHeight的方法

    具体来说,原本归属于 `document.body` 的一些属性(如 `clientHeight`, `clientWidth`, `offsetWidth`, `offsetHeight`, `scrollWidth`, `scrollHeight`, `scrollTop`, 和 `scrollLeft`)会被重新分配给 `document....

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

    - `document.body.scrollWidth` 和 `document.body.scrollHeight` 分别表示网页的完整宽度和高度,即使超过了当前视口。 - `document.body.scrollTop` 和 `document.body.scrollLeft` 是用来获取或设置网页在垂直和...

    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 获取当前页面可视高度和宽度及浏览器宽度和高度的函数.pdf

    } else if (document.body.scrollHeight &gt; document.body.offsetHeight){ yScroll = document.body.scrollHeight; } else { yScroll = document.body.offsetHeight; } var windowHeight; if (self....

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

    本文档主要介绍了一些常用的用于获取对象尺寸的属性,包括scrollWidth、clientWidth、offsetWidth等,并对它们之间的关系进行了说明。 首先,scrollWidth和scrollHeight属性用于获取元素的滚动宽度和滚动高度。...

    javascript获得网页窗口实际大小的示例代码.docx

    - **`document.documentElement.clientWidth`** 和 **`document.documentElement.clientHeight`**:这两个属性返回的是文档元素的内部宽度和高度,不包含滚动条的宽度。 - **`document.body.clientWidth`** 和 **`...

    关于获取各种浏览器可见窗口大小

    - **`document.body.clientWidth`** 和 **`document.body.clientHeight`**:这两个属性分别表示文档体的宽度和高度,不包含边框和滚动条。 - **`document.body.offsetWidth`** 和 **`document.body.offsetHeight`**...

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

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

    JS实现点击登录弹出窗口同时背景色渐变动画效果

    bodySize[1] = (scrollHeight &gt; clientHeight) ? scrollHeight : clientHeight; } return bodySize; } ``` 这个函数获取页面的整体尺寸,包括在存在滚动条的情况下。 5. 创建遮盖层 ```javascript function ...

Global site tag (gtag.js) - Google Analytics