• 获取各种高度


    document.body.clientWidth ==> BODY对象宽度
    document.body.clientHeight ==> BODY对象高度
    document.documentElement.clientWidth ==> 可见区域宽度
    document.documentElement.clientHeight ==> 可见区域高度

    网页可见区域宽: document.body.clientWidth
    网页可见区域高: document.body.clientHeight
    网页可见区域宽: document.body.offsetWidth (包括边线的宽)
    网页可见区域高: document.body.offsetHeight (包括边线的高)
    网页正文全文宽: document.body.scrollWidth
    网页正文全文高: document.body.scrollHeight
    网页被卷去的高: document.body.scrollTop
    网页被卷去的左: document.body.scrollLeft
    网页正文部分上: window.screenTop
    网页正文部分左: window.screenLeft
    屏幕分辨率的高: window.screen.height
    屏幕分辨率的宽: window.screen.width
    屏幕可用工作区高度: window.screen.availHeight
    屏幕可用工作区宽度: window.screen.availWidth

    // 部分jQuery函数
    $(window).height()  //浏览器时下窗口可视区域高度
    $(document).height()    //浏览器时下窗口文档的高度
    $(document.body).height()      //浏览器时下窗口文档body的高度
    $(document.body).outerHeight(true) //浏览器时下窗口文档body的总高度 包括border padding margin
    $(window).width()  //浏览器时下窗口可视区域宽度
    $(document).width()//浏览器时下窗口文档对于象宽度
    $(document.body).width()      //浏览器时下窗口文档body的高度
    $(document.body).outerWidth(true) //浏览器时下窗口文档body的总宽度 包括border padding

    HTML精确定位:scrollLeft,scrollWidth,clientWidth,offsetWidth
    scrollHeight: 获取对象的滚动高度。
    scrollLeft:设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离
    scrollTop:设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离
    scrollWidth:获取对象的滚动宽度
    offsetHeight:获取对象相对于版面或由父坐标 offsetParent 属性指定的父坐标的高度
    offsetLeft:获取对象相对于版面或由 offsetParent 属性指定的父坐标的计算左侧位置
    offsetTop:获取对象相对于版面或由 offsetTop 属性指定的父坐标的计算顶端位置
    event.clientX 相对文档的水平座标
    event.clientY 相对文档的垂直座标
    event.offsetX 相对容器的水平坐标
    event.offsetY 相对容器的垂直坐标
    document.documentElement.scrollTop 垂直方向滚动的值
    event.clientX+document.documentElement.scrollTop 相对文档的水平座标+垂直方向滚动的量

    但是发现document.body.scrollTop一直是0。

    查资料发现是DTD的问题。

    页面指定了DTD,即指定了DOCTYPE时,使用document.documentElement.scrollTop。

    页面没有DTD,即没指定DOCTYPE时,使用document.body.scrollTop。

    2、各浏览器下 scrollTop的差异
    IE:

    对于没有doctype声明的页面,使用 document.body.scrollTop 或 document.documentElement.scrollTop;

    对于有doctype声明的页面,则使用 document.documentElement.scrollTop;

    Chrome、Firefox:

    对于没有doctype声明的页面,使用 document.body.scrollTop 来获取 scrollTop高度 ;

    对于有doctype声明的页面,则使用 document.documentElement.scrollTop;

    Safari:

    safari 比较特别,有自己获取scrollTop的函数 : window.pageYOffset ;

    3、解决办法
    因此,为了兼容所有浏览器,封装一个函数,去获取页面向上卷曲出去的距离和向左卷曲出去的距离

    //获得页面向左、向上卷动的距离
    function getScroll(){
        return {
            left: window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0,
            top: window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0
        };
    }
    
  • 相关阅读:
    [BZOJ1294][SCOI2009]围豆豆Bean 射线法+状压dp+spfa
    [BZOJ1060][ZJOI2007]时态同步 树形dp
    [BZOJ1082][SCOI2005]栅栏 二分+搜索减枝
    [BZOJ1055][HAOI2008]玩具取名 区间dp
    [BZOJ1070][SCOI2007]修车 费用流
    [LeetCode 560] Subarray Sum Equals K
    Line of wines
    [LeetCode 1197] Minimum Knight Moves
    [Daily Coding Problem 293] Minimum Cost to Construct Pyramid with Stones
    [Daily Coding Problem 294] Shortest round route with rising then falling elevations
  • 原文地址:https://www.cnblogs.com/mary-123/p/13803386.html
Copyright © 2020-2023  润新知