>  기사  >  웹 프론트엔드  >  offsetHeight, clientHeight, scrollHeight_javascript 기술 간의 차이점을 구문 분석합니다.

offsetHeight, clientHeight, scrollHeight_javascript 기술 간의 차이점을 구문 분석합니다.

WBOY
WBOY원래의
2016-05-16 17:13:561007검색

在网上搜了一下,结论非常笼统,讲IE从不讲版本,因此自己做了测试并上传结论。以下结论皆是在标准模式下测试通过的,没有测试quirk模式。

clientHeight

大部分浏览器对 clientHeight 都没有什么异议,都认为是内容可视区域的高度,也就是说页面浏览器中可以看到内容的这个区域的高度,即然是指可看到内容的区域,滚动条不算在内。但要注意padding是算在内。其计算方式为clientHeight = topPadding + bottomPadding+ height - scrollbar.height。

offsetHeight
在IE6,IE7,IE8以及最新的的FF, Chrome中,在元素上都是offsetHeight = clientHeight + 滚动条 + 边框。

scrollHeight
scrollHeight是元素的padding加元素内容的高度。这个高度与滚动条无关,是内容的实际高度。

计算方式 :scrollHeight = topPadding + bottomPadding + 内容margix box的高度。


在浏览器中的区别在于:

IE6、IE7 认为scrollHeight 是网页内容实际高度,可以小于clientHeight。

FF、Chrome 认为scrollHeight 是网页内容高度,不过最小值是clientHeight。

注: 以上都是对于一般元素而方言的,body和documentElement的clientHeight, offsetHeight和scrollHeight在各个浏览器中的计算方式又不同。在所有的浏览器中,如果你想获取整个视窗的高度,你得用documentElement.clientHeight,因为body.clientHeight是由它的内容决定的。 关于body和documentElement的这些属性,则完全是另外一回事:


FF19

在body上设置overflow:scroll就是设置浏览器的滚动条,导致body.clientHeight永远都等于body.scrollHeight。

body
clientHeight:body.padding+ body.height(css设置或内容撑的);

offsetHeight:clientHeight+ body.border;

scrollHeight== clientHeight。

documentElement
clientHeight= window视窗高度 -scrollbar.width。

offsetHeight= body.offsetHeight  + body.margin。

scrollHeight= 内容的高度(与body的height样式无关),但最小值是documentElement.clientHeight。

元素上
offsetHeight= padding + border + height。

clientHeight= padding + height - scrollbar.width。

scrollHeight>= clientHeight

从结果分析,FF认为scrollHeight的最小高度是clientHeight。

offsetLeft = 元素border左上角到window视窗原点的距离 或 到offsetParent的borderbox顶部的距离。

Chrome
body
clientHeight= body.padding + body.height(css设置或内容撑大);

offsetHeight = body.clientHeight + body.border;

scrollHeight= body.padding + 内容的高度(与height样式无关),但最小值是documentElement.clientHeight。

documentElement
clientHeight= window视窗高度 – 滚动条高度。

offsetHeight  = body.offsetHeight + body.margin;

scrollHeight  = 内容的高度(与body上的height无关),但最小值是documentElement.offsetHeight。

元素上
offsetHeight = padding + border + height。

clientHeight = padding + height - scrollbar.width。

scrollHeight >= clientHeight

Safari 5
body
clientHeight= body.padding + body.height(CSS或内容撑的);

offsetHeight= clientHeight + border;

scrollHeight= body.padding + 内容的高度(与height样式无关),但最小值是documentElement.clientHeight。

documentElement
clientHeight = window窗口大小 – 滚动条大小

offsetHeight = body.offsetHeight + body.margin

scrollHeight= 内容的高度(与body上的height无关),但最小值是documentElement.offsetHeight。

IE8
在IE8下,滚动条的大小是17个像素。

body
clientHeight= body.padding + body.height(css设置或内容撑大)

offsetHeight = clientHeight + body.border

scrollHeight =内容的高度(与body上的height无关),但最小值是clientHeight。

documentElement
clientHeight = 窗口大小(除去滚动条后)

offsetHeight = clientHeight + 滚动条大小 + body.border

scrollHeight=内容的高度(与body上的height无关),但最小值是body.offsetHeight+ margin。

元素上
offsetHeight = padding + border + height。

clientHeight = padding + height - scrollbar.width。

scrollHeight >= clientHeight

从结果分析,FF认为scrollHeight的最小高度是clientHeight。

offsetLeft = 요소 테두리의 왼쪽 상단에서 캔버스 원점까지의 거리 또는 offsetParent의 테두리 상자 상단에서 거리입니다.

IE7
IE7에서는 본문에 설정된 스크롤바가 창의 스크롤바가 아니라는 점에 유의할 필요가 있습니다.

body
clientHeight= body.padding 높이(CSS 설정 또는 콘텐츠 확장) – 본문의 스크롤 막대.

offsetHeight= clientHeight 스크롤 막대 크기 body.border.

scrollHeight= 콘텐츠의 높이입니다(본문의 높이와 관계없음).

documentElement
clientHeight = 창 크기(스크롤 막대 유무에 관계없음)

offsetHeight = 클라이언트 높이.

scrollHeight = body.offsetHeight border.margin

요소
offsetHeight = 패딩 테두리 높이.

clientHeight = 패딩 높이 - scrollbar.width.

scrollHeight = 패딩 콘텐츠 여백 상자 높이

결과 분석에서 IE7은 scrollHeight가 clientHeight보다 작을 수 있다고 믿습니다.

offsetLeft = 요소 테두리 상자의 왼쪽 위 모서리부터 부모 컨테이너(offsetParent 아님) 테두리 상자의 왼쪽 위 모서리까지의 거리입니다.

IE6
IE6에서는 IE7과 마찬가지로 본문에 설정된 스크롤바가 창의 스크롤바가 아닙니다.

body
clientHeight = body.padding body.height

offsetHeight = body.clientHeight body.border 본문의 스크롤 막대 크기입니다.

scrollHeight = 콘텐츠의 높이(본문의 높이와 관계없음)

documentElement
IE6에서는 IE7과 유사하지만 본문에 설정된 스크롤 막대가 창의 스크롤 막대는 아니지만 clientHeight 및 offsetHeight는 여전히 다른 브라우저와 일치합니다.

clientHeight = 창 크기(창 스크롤 막대 크기를 제거한 후)

offsetHeight =clientHeight body.border

scrollHeight = body.offsetHeight body.margin

요소
offsetHeight = 패딩 테두리 높이.

clientHeight = 패딩 높이 - scrollbar.width.

scrollHeight = 패딩 콘텐츠 여백 상자 높이

결과 분석에서 IE6은 scrollHeight가 clientHeight보다 작을 수 있다고 믿습니다.

마찬가지로

clientWidth, offsetWidth 및 scrollWidth에 대한 설명은 위와 동일하며 높이를 너비로 바꾸면 됩니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.