zoukankan      html  css  js  c++  java
  • 页面宽高,窗口宽高,元素宽高,元素位置,页面滚动距离

    注:以下内容只适用于chrome

    页面宽高:

    document.body.clientWidth/Height(不包括margin)

    document.body.offsetWidth/Height(不包括margin)

    document.body.scrollWidth/Height(包括margin)

    tips:

    1.如果不是最大化浏览器窗口,且在body标签设置min-width,document.body.offsetWidth会比document.body.clientWidth多出2px,那就是滚动条旁边的2px空白空间。

    2.有时候,没设置overflow:hidden;图片会撑出页面宽度。从而,你认为有横向滚动条的页面宽度数值不准。

    窗口viewport宽高:

    window.innerWidth/Height(带滚动条)

    document.documentElement.clientWidth/Height(不带滚动条)

    元素宽高:

    element.offsetWidth/Height(width+padding+border)

    element.scrollWidth/Height(width+padding,没加border)

    元素位置:

    element.offsetTop/Left(相对于父元素offsetParent对象) 

    通过递归父元素,获取父元素的offsetTop/Left即可获取元素相对于页面的位置

    function getElementTop(element){
        var actualTop = element.offsetTop;
        var current = element.offsetParent;

        while (current !== null){
          actualTop += current.offsetTop;
          current = current.offsetParent;
        }

        return actualTop;
      }

    另一种方法,

    使用getBoundingClientRect()方法获取元素相对于窗口的距离,返回的是left、right、top、bottom,width和height

    var X= this.getBoundingClientRect().left+document.body.scrollLeft;

    var Y =this.getBoundingClientRect().top+document.body.scrollTop;

    页面滚动距离:

    window.pageXOffset/window.pageYOffset

    document.body.scrollTop/document.body.scrollLeft

    参考链接:

    http://www.cnblogs.com/dolphinX/archive/2012/11/19/2777756.html

    http://www.ruanyifeng.com/blog/2009/09/find_element_s_position_using_javascript.html

    http://blog.jobbole.com/44319/

  • 相关阅读:
    每天干的啥?(2017.7)
    每天干的啥?(2017.6)
    每天干的啥?(2017.5)
    每天干的啥?(2017.4)
    C# WinForm中如何让当前应用程序只允许启动一个实例
    C# WinForm 关闭登陆窗体后进程还再内存怎么办?
    ASP.NET在MVC控制器中获取Form表单值的方法
    C#封装CRUD到SqlHelper类解读
    windows 10微软账户不能访问局域网共享,但是本地账户可以访问
    C#高级参数params的使用
  • 原文地址:https://www.cnblogs.com/samwu/p/4011724.html
Copyright © 2011-2022 走看看