对offsetHeight,clientHeight,scrollHeight的理解

offsetHeight是包含contentHeight+padding+borderHeight+ScrollBarHeight的

clientHeight仅包含contentHeight+padding,不含borderHeight+ScrollBarHeight的

换句话就是外内问题。

打个比喻你买手机,卖家是给你配个盒子的,你用的时候不用盒子,但你要把存起来,最后还是放到盒子里,所占用的空间不仅包含手机,更要看盒子的宽度,至于margin那是盒子与盒子之间的距离。

再打个比喻,你书架上放了很多书,大多数书都是直接放书架上,但一些书用硬壳包装起来的。

scrollHeight包含了在有(或无)滚动条的情况下的不可见溢出部分,还包含::before,::after这样的伪元素。

如果是clientHeight是内,scrollHeight就是内部的深度,广度,折叠的长度。

打个比喻,你做电梯,你看见的是一层楼的高度,但是他可能是十几二十几层楼的高度。

再打个比喻,你从书架上拿了一本书放在书桌上阅读,你看到的只有一本书32K的大小,但他有很多页,如果200页,那他的长度就是32K * 200 。

当然很多时候offsetHeight,clientHeight,scrollHeight的值完全一模一样。

contentHeight为内容高度,怎么确定?有时候由内容高度自然确定,有时候也由样式强制指定。

document.documentElement的值,首先document.documentElement = html,body的上级。他就是打开浏览器除去浏览器的标题栏地址栏书签栏等高度的呈现出的内容。

他的clientHeight是一个固定的,就是刚才我们说的,但是offsetHeight,scrollHeight是变化的,他极可能小于clientHeight,也可以大于,当然也能等于。

或许他的clientHeight才有意义,就是刚才我们说的,可是offsetHeight,scrollHeight主要依托他的子元素body来确定吧(废话,html下就只有body了,除了由他还能由谁,谁不是由子元素确定?)我意思是指offsetHeight按说应该跟随的clientHeight的,但是显然html的offsetHeight脱离了clientHeight,二十直接跟body联系的。

原文地址:https://www.cnblogs.com/webkb/p/11505592.html

时间: 2024-08-29 02:56:26

对offsetHeight,clientHeight,scrollHeight的理解的相关文章

关于offsetTop offsetHeight clientHeight scrollHeight scrollTop的区别研究

我是以chrome浏览器做的研究. 先看一段代码: <script> window.addEventListener('DOMContentLoaded',function(){ var node1 = document.querySelector('#father'); var node2 = document.querySelector('#child'); console.log('offsetTop==offsetHeight==scrollTop==scrollHeight==cli

彻底搞清楚DOM元素的height,offsetHeight,clientHeight,scrollHeight

测试用例: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible&quo

主流浏览器下下offsetHeight\clientHeight\scrollHeight以及window的innerHeight\outHeight等的关系

1.Firefox32.03 body clientHeight:body.padding+ body.height(css设置或内容撑的,以设置的优先); offsetHeight:body.padding+ body.height(css设置或内容撑的,以设置的优先)+body.border; scrollHeight:body.padding+ body.height(css设置或内容撑的,谁大谁优先); documentElement clientHeight= window.inner

height clientHeight scrollHeight offsetHeight的大致区别

这主要是针对火狐浏览器来讲的: height:就是div的高度: clientHeight:一般情况下和height是一样的,如果div有滚动条,那么clientHeight = height - 滚动条的高度: var w= document.documentElement.clientWidth || document.body.clientWidth; var h= document.documentElement.clientHeight || document.body.clientH

clientHeight , scrollHeight , offsetHeight之间的区别及兼容方案

clientHeight , scrollHeight , offsetHeight相信每个人都用过,可是每次用都要查一下到底哪个是文档大小哪个是视口大小,还有头疼的兼容问题. 先来官方的了解一下这三个属性: clientHeight:元素客户区的大小,指的是元素内容及其边框所占据的空间大小(经过实践取出来的大多是视口大小) scrollHeight: 滚动大小,指的是包含滚动内容的元素大小(元素内容的总高度) offsetHeight: 偏移量,包含元素在屏幕上所用的所有可见空间(包括所有的内

offsetHeight, clientHeight与scrollHeight的区别

在网上搜了一下,结论非常笼统,讲IE从不讲版本,因此自己做了测试并上传结论.以下结论皆是在标准模式下测试通过的,没有测试quirk模式. clientHeight 大部分浏览器对 clientHeight 都没有什么异议,认为是元素可视区域的高度,也就是说元素或窗口中可以看到内容的这个区域的高度,即然是指可看到内容的区域,滚动条不算在内.但要注意padding是算在内.其计算方式为clientHeight = topPadding + bottomPadding+ height - 水平滚动条高

详解clientHeight、offsetHeight、scrollHeight

关于clientHeight.offsetHeight.scrollHeight window.screen.availWidth 返回当前屏幕宽度(空白空间) window.screen.availHeight 返回当前屏幕高度(空白空间) window.screen.width 返回当前屏幕宽度(分辨率值) window.screen.height 返回当前屏幕高度(分辨率值) window.document.body.offsetHeight; 返回当前网页高度 window.docume

height、clientHeight、offsetHeight、scrollHeight、height()、 innerHeight()、outerHeight()等的区别

1.height height是css属性,这个属性定义元素内容区的高度,在内容区外面可以增加内边距.边框和外边距. 当  box-sizing: content-box 时,高度应用到元素的内容框. 当  box-sizing:border-box时,高度包含了内容框.内边距和边框. 2.clientHeight Element.clientHeight只读属性是没有的CSS或内联布局框元素为零,否则它的像素单元内的高度,但不包括填充水平滚动条的高度,边界或边缘. // 包含元素的conten

offsetTop/offsetHeight scrollTop/scrollHeight 的区别

offsetTop/offsetHeight   scrollTop/scrollHeight  这几个属性困扰了我N久,这次一定要搞定. 假设 obj 为某个 HTML 控件. obj.offsetTop   obj距离上方或上层控件的位置,整型,单位像素. obj.offsetHeight   obj自身的高度,整型,单位像素. offsetTop 可以获得 HTML 元素距离上方或外层元素的位置,style.top 也是可以的,二者的区别是: 一.offsetTop 返回的是数字,而 st