2019独角兽企业重金招聘Python工程师标准>>>

window.screen.availWidth     返回当前屏幕宽度(空白空间)
window.screen.availHeight     返回当前屏幕高度(空白空间)
window.screen.width     返回当前屏幕宽度(分辨率值)
window.screen.height     返回当前屏幕高度(分辨率值)
window.document.body.offsetHeight;     返回当前网页高度
window.document.body.offsetWidth;     返回当前网页宽度
clientHeight与offsetHeight的区别许多文章已经介绍了clientHeight和offsetHeight的区别,就是clientHeight的值不包括scrollbar的高度,而offsetHeight的值包括了scrollbar的高度。然而,clientHeight和offsetHeight的值到底由什么组成的呢?如何计算这两个数的值?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: 264in 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值的两倍。前两天修改代码时接触到网页高度和可视区域高度的概念,发现clientHeight、offsetHeight、scrollHeight在不同的浏览器里会有不同的结果,于是做了一下测试。
HTML 4.01下的测试
测试代码如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>clientHeight、offsetHeight和scrollHeight 测试</title>
</head>
<body><div id="info"></div>
<script type="text/javascript">
<!--
var info = document.getElementByIdx_x_x("info");
var infoStr = "&lt;!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"&gt;<br />&lt;html&gt;<br /><br />";function SetInfoStr()
{infoStr += "info.style.width = " + info.style.width + "<br />" +"info.style.height = " + info.style.height + "<br />" +"document.body.clientHeight = " + document.body.clientHeight + "<br />" +"document.body.offsetHeight = " + document.body.offsetHeight + "<br />" +"document.body.scrollHeight = " + document.body.scrollHeight + "<br />" +"document.documentElement.clientHeight = " + document.documentElement.clientHeight + "<br /><br />";
}info.style.width = "0px";
info.style.height = "0px";
SetInfoStr();info.style.width = "2000px";
info.style.height = "0px";
SetInfoStr();info.style.width = "0px";
info.style.height = "2000px";
SetInfoStr();info.style.width = "2000px";
info.style.height = "2000px";
SetInfoStr();infoStr += "<br /><a href=\"http://witmax.cn\">晴枫</a> 制作";
info.innerHTML = infoStr;
-->
</script>
</body>
</html>
测试使用现在主流的四个浏览器:IE、Firefox、Opera、Chrome。数据太多,测试结果不予列出。
HTML 4.01下的测试结果分析:
document.body.clientHeight
在各个浏览器中都是等于内容可视区域的高度。内容可视区域是指浏览器最后一个工具条以下到状态栏以上的区域,与页面内容无关,如有滚动条的话则排除滚动条所占的区域。因为各浏览器对宽度超过屏幕宽度、高度为0的div是否会使屏幕出现滚动条理解不一,因此测试结果会略有不同。测试结果显示Firefox不显示滚动条,IE、Opera、Chrome都会显示滚动条。
document.body.offsetHeight
IE和Opera下该值一直等于document.body.clientHeight+滚动条高度+窗口边框(IE为4,Opera为0),即浏览器最后一个工具条以下到状态栏以上的区域的高度。
Firefox下该值等于网页内容实际高度,即body上下border外延之间的距离(包括body的border和padding、不包括body的margin,通过对body标签增加样式对比结果可知),可小于document.body.clientHeight。
注:body的border和padding默认值为0px,margin-top和margin-bottom默认值IE为15px、其他为8px。
Chrome下该值等于网页内容实际高度(定义同上);但当网页内容实际高度于document.body.clientHeight时,该值等于document.body.clientHeight-body的margin宽度。
document.body.scrollHeight
IE下该值等于网页内容实际高度(定义同上)+body的上下magin宽度,可小于document.body.clientHeight。
Firefox、Opera、Chrome下该值等于网页内容实际高度(定义同上)+body的上下magin宽度;但当等于网页内容实际高度(定义同上)+body的上下magin宽度小于document.body.clientHeight时,该值等于document.body.clientHeight。
document.documentElement.clientHeight
IE下该值一直为0。
Firefox和Opera下该值等于网页内容实际高度(定义同上)+body的上下magin宽度,可小于document.body.clientHeight。
Chrome下该值等于document.body.scrollHeight。
同理,clientWidth、offsetWidth 和 scrollWidth 的解释与上面相同,只是把高度换成宽度即可。
出于浏览器兼容的考虑,要获取页面的实际高度就需要区别获取。显得麻烦。
注:不指定doctype,结果与上述测试相同,即HTML 4.01是浏览器的默认渲染模式。XHTML 1.1下的测试
下面修改HTML文档的doctype,只修改了前两行代码,将测试代码改为如下:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>clientHeight、offsetHeight和scrollHeight 测试</title>
</head>
<body><div id="info"></div>
<script type="text/javascript">
<!--
var info = document.getElementByIdx_x_x("info");
var infoStr = "&lt;!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\"&gt;<br />&lt;html xmlns=\"http://www.w3.org/1999/xhtml\" &gt;<br /><br />";function SetInfoStr()
{infoStr += "info.style.width = " + info.style.width + "<br />" +"info.style.height = " + info.style.height + "<br />" +"document.body.clientHeight = " + document.body.clientHeight + "<br />" +"document.body.offsetHeight = " + document.body.offsetHeight + "<br />" +"document.body.scrollHeight = " + document.body.scrollHeight + "<br />" +"document.documentElement.clientHeight = " + document.documentElement.clientHeight + "<br /><br />";
}info.style.width = "0px";
info.style.height = "0px";
SetInfoStr();info.style.width = "2000px";
info.style.height = "0px";
SetInfoStr();info.style.width = "0px";
info.style.height = "2000px";
SetInfoStr();info.style.width = "2000px";
info.style.height = "2000px";
SetInfoStr();infoStr += "<br /><a href=\"http://witmax.cn\">晴枫</a> 制作";
info.innerHTML = infoStr;
-->
</script>
</body>
</html>依然使用上述四个浏览器——IE、Firefox、Opera、Chrome进行测试。数据太多,测试结果不予列出。
XHTML 1.1下的测试结果分析:
document.body.clientHeight / document.body.offsetHeight
都相等,且各浏览器表现一致,都等于页面内容实际高度(定义同上),最小可为0。
document.body.scrollHeight
IE、Firefox、Opera表现相同,都等于document.body.clientHeight和document.body.offsetHeight,最小可为0。
Chrome下该值等于HTML 4.01下的document.body.scrollHeight。
document.documentElement.clientHeight
各浏览器表现一致,都等于内容可视区域的高度(定义同上),等于HTML 4.01下的document.body.clientHeight值。
注:指定doctype为<!DOCTYPE HTML>,结果与上述测试相同,即HTML 5延续了XHTML 1.1的一些规范。总   结
要保证浏览器兼容,建议是采用XHTML 1.1,这样便可以使用document.body.clientHeight或document.body.offsetHeight获得页面的实际高度,使用document.documentElement.clientHeight获得内容可视区域的高度。因为HTML 5标准并没有被所有主流浏览器全部支持,所以暂不推荐使用,当然这将是未来的发展趋势。最后,关于doctype的知识建议学习下《用doctype激活浏览器模式》。

转载于:https://my.oschina.net/meng527/blog/481219

clientHeight、offsetHeight 和 scrollHeight相关推荐

  1. clientHeight ,offsetHeight,style.height,scrollHeight有区别与联系

    style.height 包括 元素的滚动条,不包括边框 clientHeight 不包括元素的滚动条和边框,只有在没有元素的滚动条的情况下,style.height相等于clientHeight o ...

  2. 再次详解clientHeight、offsetHeight、scrollHeight

    关于clientHeight.offsetHeight.scrollHeight window.screen.availWidth 返回当前屏幕宽度(空白空间) window.screen.avail ...

  3. clientHeight、offsetHeight、scrollHeight问题

    我们这里说说四种浏览器对 document.body 的 clientHeight.offsetHeight 和 scrollHeight 的解释,这里说的是 document.body,如果是 HT ...

  4. 四种浏览器对 clientHeight、offsetHeight、scrollHeight、clientWidth、offsetWidth 和 scrollWidth 的解释差异...

    转自http://blog.163.com/chudaozhe@126/blog/static/1157323432011626112137928/ 网页可见区域宽:document.body.cli ...

  5. CSS中clientHeight、offsetHeight、scrollHeight、scrollTop、scrollTo几者的区别和关联

    怎么区分clientHeight.offsetHeight.scrollHeight.scrollTo.scrollTop呢,我们通过下面的示例来搞清楚. 现有如下示例: 对应css为 .div {w ...

  6. clientHeight offsetHeight scrollHeight offsetTop scrollTop

    文章目录 各属性详解 实现 offsetParent.offsetLeft/offsetTop深度剖析 element.offsetParent 定义 祖先元素中不存在定位元素 webkit内核.Fi ...

  7. css clientheight、offsetheight、scrollheight详解

    介绍 网上介绍clientheight.offsetheight.scrollheight的帖子很多,看后感觉明白了,一细想似乎又不明白了.为了获取更权威的解答,查阅了MDN 文档,希望能帮助后来人. ...

  8. clientHeight、offsetHeight、scrollHeight、scrollTop

    由于长时间对clientHeight.offsetHeight.scrollHeight.scrollTop这几个js-dom不理解,处于半迷糊状态,现在就仔仔细细实验整理一波,希望能做个总结,方便以 ...

  9. 【夯实基础 】 js获取的clientHeight、offsetHeight和scrollHeight的区别

    clientHeight.offsetHeight和scrollHeight的区别 clientHeight = content + padding, 不加溢出内容的高度 ,返回整数 offsetHe ...

最新文章

  1. JAVA escape/unescape
  2. 本土化App名稱和icon
  3. 腾讯云服务器配置JDK和Tomcat环境
  4. linux makefile 只能使用Tab键进行文本缩进
  5. Golang unsafe.Pointer指针
  6. 使用 webpack 4 和 Babel 构建 React 应用(2018)
  7. hadoop3.2.0集群搭建的一些坑!
  8. MAUI中Maui.Graphics.Controls绘制控件
  9. JAVA核心技术卷2:高级特征(原书第8版)
  10. Python连接MySQL数据库(pymysql),DataFrame写入 MySQL(create_engine)- Python代码
  11. python 并列条形图_python – 来自两个pandas数据框的分组条形图
  12. shedlock源码解析
  13. nodejs操作redis总结
  14. Gradle与Gradle插件
  15. 收获,不止oracle
  16. 动手设计 CPU(三)—— 微程序控制的存储器读写系统设计
  17. 中国城市新分级名单(转)
  18. 漫画C语言 做个聊天软件你不懂也得懂
  19. 设计图纸管理系统办公系统实现无纸化
  20. gps性能测试软件,VisualGPSXP入门 专业GPS测试软件

热门文章

  1. 在github中使用pages上传自己的网页
  2. 韩顺平循序渐进学java 第13讲 抽象类.接口
  3. 关于archlinux下的ralink5370网卡
  4. 转载:程序员从初级到中级10个秘诀
  5. B/S开发中浏览器的工具利器
  6. 全国python一级考试时间_2019年北京全国计算机一级考试时间
  7. Java基础 —— 变量,选择,循环,数组,输入与输出等
  8. bert 中文 代码 谷歌_如何用最强模型BERT做NLP迁移学习?
  9. java long类型转string_JavaSE的学习——数据类型
  10. java 获取mac地址 乱码_Java:开机获取Mac地址问题