页面和块高度在JavaScript中的属性总结

经常看到有人百度为什么cliengHeihgt获取的值为0,clientHeight与offsetHeight到底哪里不一样,为什么遇到这样问题的时候你总是感到迷惘呢,究其原因是对他们的属性不认识造成的,当我们创建HTML页面时候对于一个元素的宽度通常我们会指定他多大(以百分比或以像素为单位),但高度往往可以有所不同,这取决于你的内容。与块的高度相关联的常见问题是:向下滚动到特定的地方高度是多少;元素的绝对位置,;一个块相对于另一个块的高度等。在这种情况下CSS并不总是有帮助,特别是如果页面是动态的,这个时候使用javascript来获取他们的值是非常有帮助的

页面高度

设置窗口对象的高度的方法:

属性

描述

innerHeight(innerWidth)

设置窗口的内容区域的高度

outerHeight(outerWidth)

设置窗口高度

screen.availHeight(screen.availWidth)

高度,以像素为单位的工作区屏幕大小(不含工具栏的高度)

screen.height(screen.width) 

屏幕的高度(以像素为单位)

screenY(screenX)

从屏幕顶部到浏览器窗口的上边界的距离

scrollY(scrollX)

文档垂直滚动的距离

pageYOffset(pageXOffset)

页面的当前垂直位置相对于窗口角最上方左侧

请注意,第一并非所有的浏览器都支持,第二,并非所有的属性值一致。另外,不要忘 记,这些都是针对窗口对象中的所有属性,这意味着它们只适用于窗口对象,所以你不能这样写document.getElementById(ID).innerHeight等  但是,在测试过程中(IE 6, FF 2.0, Opera 9.25)),结果发现,所有的浏览器只支持window.screen.availHeight和 window.screen.height(见下面汇总表)。但是,在大多数情况下,这是不够的,它往往是要知道块或容器的高度,所以你应该寻找其他方式

属性

描述

clientHeight(clientWidth)

没有滚动条的高度

scrollHeight(scrollWidth)

包括滚动条的高度

scrollTop(scrollLeft)

当前位置相对于该块的上边界的垂直位移

offsetHeight(offsetWidth)

对象的可见宽度,包滚动条等边线,会随窗口的显示大小改变

重要注意事项:这些属性需要在页面完全加载后才能使用,否则可能会有所不同,为什么呢?看下面的表...

汇总表

属性

没有定义DOCTYPE

定义了!!DOCTYPE XHTML 1.0 Transitional

IE浏览器(6)

FF(2.0)

Opera(9.25)

IE浏览器(6)

FF(2.0)

Opera(9.25)

window.innerHeight

未定义

807

848 

未定义

807

848

window.outerHeight

未定义

979

911

未定义

979

911

window.screen.availHeight

971

971

971

971

971

971

window.screen.height

1024

1024

1024

1024

1024

1024

window.screenY

未定义

-4

-23

未定义

-4

-23

window.scrollY

未定义

变化取决于从滚动

未定义

未定义

变化取决于从滚动

未定义

window.pageYOffset

未定义

变化取决于从滚动

变化取决于从滚动

未定义

变化取决于从滚动

变化取决于从滚动

document.body.clientHeight

846

807

848

3196

3124

3136

document.body.scrollHeight

3252

3202

3166

3196

3124

3136

document.body.scrollTop

变化取决于从滚动

变化取决于从滚动

变化取决于从滚动

0

0

0

document.documentElement.scrollTop

0

0

0

变化取决于从滚动

变化取决于从滚动

变化取决于从滚动

document.body.offsetHeight

850

3192

848

3196

3124

3136

的document.getElementById(this_tbl).clientHeight

361

371

361

361

370

361

的document.getElementById(this_tbl).scrollHeight

361

371

361

361

370

361

的document.getElementById(this_tbl).offsetHeight

361

371

361

361

370

361

测试在您的浏览器(刷新页面点击下面refresh按钮就行测试)

window.innerHeight   700
window.outerHeight   878
window.screen.availHeight   870
window.screen.height   900
window.screenY   -4
window.scrollY   0
window.pageYOffset   0
document.body.clientHeight   145
document.body.scrollHeight   145
document.body.scrollTop   0
document.documentElement.scrollTop   0
document.body.offsetHeight   145
的document.getElementById(TBL)。clientHeight   347
的document.getElementById(TBL)。scrollHeight   347
的document.getElementById(TBL)。offsetHeight   347

注: 表中的值取决于个人设置(工具栏,状态栏,字体大小等),所以他们可能会有所不同,即使你的浏览器版本是相同的。

结论

  • DOCTYPE影响上述参数的值;
  • 在屏幕上确定高度时,你总是可以根据window.screen.height来确定;
  • 找到一个页面或块元素的可见部分的高度使用的document.getElementById.(id).clientHeight,包括滚动部分的- 的document.getElementById(ID).scrollHeight。

hide

原文地址:https://www.cnblogs.com/58top/p/researching_page_and_block_heights_in_javascript.html