在网上搜了一下,结论非常笼统,讲IE从不讲版本,因此自己做了测试并上传结论。以下结论皆是在标准模式下测试通过的,没有测试quirk模式。 clientHeight 大部分浏览器对 clientHeight 都没有什么异议,都认为是内容可视区域的高度,也就是说页面浏览器中可以看到内容的这个区域的高度,即然是指可看到内容的区域,滚动条不算在内。但要注意padding是算在内。其计算方式为clientHeight = topPadding bottomPadding height - scrollbar.height。 offsetHeight scrollHeight 计算方式 :scrollHeight = topPadding bottomPadding 内容margix box的高度。
IE6、IE7 认为scrollHeight 是网页内容实际高度,可以小于clientHeight。 FF、Chrome 认为scrollHeight 是网页内容高度,不过最小值是clientHeight。 注: 以上都是对于一般元素而方言的,body和documentElement的clientHeight, offsetHeight和scrollHeight在各个浏览器中的计算方式又不同。在所有的浏览器中,如果你想获取整个视窗的高度,你得用documentElement.clientHeight,因为body.clientHeight是由它的内容决定的。 关于body和documentElement的这些属性,则完全是另外一回事:
在body上设置overflow:scroll就是设置浏览器的滚动条,导致body.clientHeight永远都等于body.scrollHeight。 body offsetHeight:clientHeight body.border; scrollHeight== clientHeight。 documentElement offsetHeight= body.offsetHeight body.margin。 scrollHeight= 内容的高度(与body的height样式无关),但最小值是documentElement.clientHeight。 元素上 clientHeight= padding height - scrollbar.width。 scrollHeight>= clientHeight 从结果分析,FF认为scrollHeight的最小高度是clientHeight。 offsetLeft = 元素border左上角到window视窗原点的距离 或 到offsetParent的borderbox顶部的距离。 Chrome offsetHeight = body.clientHeight body.border; scrollHeight= body.padding 内容的高度(与height样式无关),但最小值是documentElement.clientHeight。 documentElement offsetHeight = body.offsetHeight body.margin; scrollHeight = 内容的高度(与body上的height无关),但最小值是documentElement.offsetHeight。 元素上 clientHeight = padding height - scrollbar.width。 scrollHeight >= clientHeight Safari 5 offsetHeight= clientHeight border; scrollHeight= body.padding 内容的高度(与height样式无关),但最小值是documentElement.clientHeight。 documentElement offsetHeight = body.offsetHeight body.margin scrollHeight= 内容的高度(与body上的height无关),但最小值是documentElement.offsetHeight。 IE8 body offsetHeight = clientHeight body.border scrollHeight =内容的高度(与body上的height无关),但最小值是clientHeight。 documentElement offsetHeight = clientHeight 滚动条大小 body.border scrollHeight=内容的高度(与body上的height无关),但最小值是body.offsetHeight margin。 元素上 clientHeight = padding height - scrollbar.width。 scrollHeight >= clientHeight 从结果分析,FF认为scrollHeight的最小高度是clientHeight。 offsetLeft = 元素border左上角到画布原点的距离 或 到offsetParent的borderbox顶部的距离。 IE7 body offsetHeight= clientHeight 滚动条的大小 body.border。 scrollHeight= 内容的高度(与body上的height无关)。 documentElement offsetHeight = clientHeight。 scrollHeight = body.offsetHeight border.margin 元素 clientHeight = padding height - scrollbar.width。 scrollHeight = padding 内容marginbox的高度 从结果分析,IE7认为scrollHeight可以小于clientHeight。 offsetLeft = 元素border box左上角到父容器(不是offsetParent)的borderbox左上角的距离。 IE6 body offsetHeight = body.clientHeight body.border body上滚动条大小。 scrollHeight =内容的高度(与body上的height无关)。 documentElement clientHeight = 窗口大小(除去窗口滚动条大小后) offsetHeight =clientHeight body.border scrollHeight = body.offsetHeight body.margin 元素 clientHeight = padding height - scrollbar.width。 scrollHeight = padding 内容margin box的高度 从结果分析,IE6认为scrollHeight可以小于clientHeight。 clientWidth、offsetWidth 和scrollWidth 的解释与上面相同,只是把高度换成宽度即可。 |
|
来自: 潇湘雨plgwyaef > 《待分类》