源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

解析offsetHeight,clientHeight,scrollHeight之间的区别

  • 时间:2021-09-26 14:31 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:解析offsetHeight,clientHeight,scrollHeight之间的区别
在网上搜了一下,结论非常笼统,讲IE从不讲版本,因此自己做了测试并上传结论。以下结论皆是在标准模式下测试通过的,没有测试quirk模式。 [b]clientHeight[/b] 大部分浏览器对 clientHeight 都没有什么异议,都认为是内容可视区域的高度,也就是说页面浏览器中可以看到内容的这个区域的高度,即然是指可看到内容的区域,滚动条不算在内。但要注意padding是算在内。其计算方式为clientHeight = topPadding + bottomPadding+ height - scrollbar.height。 [b]offsetHeight [/b]在IE6,IE7,IE8以及最新的的FF, Chrome中,在元素上都是offsetHeight = clientHeight + 滚动条 + 边框。 [b]scrollHeight [/b]scrollHeight是元素的padding加元素内容的高度。这个高度与滚动条无关,是内容的实际高度。 计算方式 :scrollHeight = topPadding + bottomPadding + 内容margix box的高度。 [b]在浏览器中的区别在于:[/b] IE6、IE7 认为scrollHeight 是网页内容实际高度,可以小于clientHeight。 FF、Chrome 认为scrollHeight 是网页内容高度,不过最小值是clientHeight。 注: 以上都是对于一般元素而方言的,body和documentElement的clientHeight, offsetHeight和scrollHeight在各个浏览器中的计算方式又不同。在所有的浏览器中,如果你想获取整个视窗的高度,你得用documentElement.clientHeight,因为body.clientHeight是由它的内容决定的。 关于body和documentElement的这些属性,则完全是另外一回事: [b]FF19[/b] 在body上设置overflow:scroll就是设置浏览器的滚动条,导致body.clientHeight永远都等于body.scrollHeight。 [b]body [/b]clientHeight:body.padding+ body.height(css设置或内容撑的); offsetHeight:clientHeight+ body.border; scrollHeight== clientHeight。 [b]documentElement [/b]clientHeight= window视窗高度 -scrollbar.width。 offsetHeight= body.offsetHeight  + body.margin。 scrollHeight= 内容的高度(与body的height样式无关),但最小值是documentElement.clientHeight。 [b]元素上 [/b]offsetHeight= padding + border + height。 clientHeight= padding + height - scrollbar.width。 scrollHeight>= clientHeight 从结果分析,FF认为scrollHeight的最小高度是clientHeight。 offsetLeft = 元素border左上角到window视窗原点的距离 或 到offsetParent的borderbox顶部的距离。 [b]Chrome body [/b]clientHeight= body.padding + body.height(css设置或内容撑大); offsetHeight = body.clientHeight + body.border; scrollHeight= body.padding + 内容的高度(与height样式无关),但最小值是documentElement.clientHeight。 [b]documentElement [/b]clientHeight= window视窗高度 – 滚动条高度。 offsetHeight  = body.offsetHeight + body.margin; scrollHeight  = 内容的高度(与body上的height无关),但最小值是documentElement.offsetHeight。 [b]元素上 [/b]offsetHeight = padding + border + height。 clientHeight = padding + height - scrollbar.width。 scrollHeight >= clientHeight [b]Safari 5 body [/b]clientHeight= body.padding + body.height(CSS或内容撑的); offsetHeight= clientHeight + border; scrollHeight= body.padding + 内容的高度(与height样式无关),但最小值是documentElement.clientHeight。 [b]documentElement [/b]clientHeight = window窗口大小 – 滚动条大小 offsetHeight = body.offsetHeight + body.margin scrollHeight= 内容的高度(与body上的height无关),但最小值是documentElement.offsetHeight。 [b]IE8 [/b]在IE8下,滚动条的大小是17个像素。 [b]body [/b]clientHeight= body.padding + body.height(css设置或内容撑大) offsetHeight = clientHeight + body.border scrollHeight =内容的高度(与body上的height无关),但最小值是clientHeight。 [b]documentElement [/b]clientHeight = 窗口大小(除去滚动条后) offsetHeight = clientHeight + 滚动条大小 + body.border scrollHeight=内容的高度(与body上的height无关),但最小值是body.offsetHeight+ margin。 [b]元素上 [/b]offsetHeight = padding + border + height。 clientHeight = padding + height - scrollbar.width。 scrollHeight >= clientHeight 从结果分析,FF认为scrollHeight的最小高度是clientHeight。 offsetLeft = 元素border左上角到画布原点的距离 或 到offsetParent的borderbox顶部的距离。 [b]IE7 [/b]在IE7中,body上设置的滚动条并不是窗口的滚动条,这个需要注意。 [b]body [/b]clientHeight= body.padding + height(css设置或内容撑大)– body上的滚动条。 offsetHeight= clientHeight + 滚动条的大小+body.border。 scrollHeight=   内容的高度(与body上的height无关)。 [b]documentElement [/b]clientHeight = window视窗大小(与滚动条的有无无关) offsetHeight = clientHeight。 scrollHeight = body.offsetHeight + border.margin [b]元素 [/b]offsetHeight = padding + border + height。 clientHeight = padding + height - scrollbar.width。 scrollHeight = padding + 内容marginbox的高度 从结果分析,IE7认为scrollHeight可以小于clientHeight。 offsetLeft = 元素border box左上角到父容器(不是offsetParent)的borderbox左上角的距离。 [b]IE6 [/b]在IE6中,与IE7类似, body上设置的滚动条并不是窗口的滚动条。 [b]body [/b]clientHeight = body.padding + body.height offsetHeight = body.clientHeight + body.border + body上滚动条大小。 scrollHeight =内容的高度(与body上的height无关)。 [b]documentElement [/b]在IE6中,与IE7类似,虽然body上设置的滚动条并不是窗口的滚动条,但它的clientHeight和offsetHeight还算与其它浏览器想统一。 clientHeight = 窗口大小(除去窗口滚动条大小后) offsetHeight =clientHeight + body.border scrollHeight = body.offsetHeight + body.margin [b]元素 [/b]offsetHeight = padding + border + height。 clientHeight = padding + height - scrollbar.width。 scrollHeight = padding + 内容margin box的高度 从结果分析,IE6认为scrollHeight可以小于clientHeight。 [b]同理[/b] clientWidth、offsetWidth 和scrollWidth 的解释与上面相同,只是把高度换成宽度即可。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部