• 页面和块高度在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

  • 相关阅读:
    Thinphp+nginx配置伪静态
    Potyczki Algorythmiczne 2013
    接下来一段时间会对大家进行网络通信的魔鬼训练理解socket
    项目中怎样做技术选型
    面试官问我:你做事仔细吗?
    【编程一生】2021年总结数据可视化技巧
    一个反直觉的sql
    CURD系统怎么做出技术含量惊艳面试官
    深入理解函数式编程
    历史文章分类汇总
  • 原文地址:https://www.cnblogs.com/58top/p/researching_page_and_block_heights_in_javascript.html
Copyright © 2020-2023  润新知