一句话理解innerHeight,(document.documentElement,document.body) / clientHeight,offsetHeight的区别和用法

Posted 点点乐淘淘

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一句话理解innerHeight,(document.documentElement,document.body) / clientHeight,offsetHeight的区别和用法相关的知识,希望对你有一定的参考价值。

要理解这几个属性,首先要搞明白body,documentElement的区别

1、body是DOM对象里的body子节点,即<body>标签
2、documentElement是整个节点树的跟节点,即<html>标签

========================下面都是废话==================================

很多人都认为body和html是一样的,判断依据就是给body加背景颜色后,整个网页文档都会跟着变色。其实这种现象并不能说明body和html节点就是同一个东西,之所以会这样是由继承导致的。

我们都知道继承是指子元素继承父元素的某些特性,body作为html的子节点,理论上是不存在html继承body属性的,但就偏偏存在这样一个例外,html继承了body的background属性,这就导致了给body添加背景颜色整个html跟着变色。(各位同学可以试试给body加个高度,设置背景颜色,然后给html设置另外一个背景颜色,看看效果)

因此新建的网页在没内容的情况下,body的高度等于0,随着内容的增加,body的高度随之增加

========================废话结束=======================================

理解了body和html的区别就好理解innerHeight,clientHeight,offsetHeight,各浏览器之所以返回的值不同,根本原因就在于计算的基准不同

1、document.body以body元素为计算基准

2、document.documentElement以html为基准

IE、Opera 认为 offsetHeight = clientHeight + 滚动条 + 边框。
chrome、FF 认为 offsetHeight 是网页内容实际高度,可以小于 clientHeight。
IE知道11版本才修改成和chorme,ff一致

以上是关于一句话理解innerHeight,(document.documentElement,document.body) / clientHeight,offsetHeight的区别和用法的主要内容,如果未能解决你的问题,请参考以下文章

0520日重点:页面高度不要设为innerheight

不正确的 window.innerWidth 和 window.innerHeight

jQuery height()innerHeight()outerHeight()函数的区别详解

当我提到宽度为 window.innerwidth 和高度为 window.innerheight 时,为啥我会溢出

window.innerHeight 在ie8中获取不到

如何获取全屏浏览器的innerHeight [重复]