获取元素 在网页中的 坐标

1. 获取 网页真实内容 高度

  • // 获取 网页真实内容 高度
    function getScrollHeight(){  
        return Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);  
    }

     

2. 获取 网页真实内容 宽度

  • // 获取 网页真实内容 宽度
    function getScrollWidth(){  
        return Math.max(document.body.scrollWidth, document.documentElement.scrollWidth);  
    }

 

3. Element.offsetLeft

  • 当前元素左上角相对于 Element.offsetParent 节点的水平位移,单位为像素

 

4. Element.offsetTop

  • 当前元素左上角相对于 Element.offsetParent 节点的垂直位移,单位为像素

3. 获取元素 在 网页 中的 坐标

方法1

  • // 获取元素 在 网页 中的 坐标    Test Already.
    function getElementPosition(ele) {
        var left = 0;
        var top = 0;
        var p = ele;
        while (p !== null)  {
            left += p.offsetLeft;
            top += p.offsetTop;
            p = p.offsetParent;   // 遍历相对元素的坐标
        }
        
        var pageHeight = Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);
        var pageWidth = Math.max(document.body.scrollWidth, document.documentElement.scrollWidth);
        
        return {
            left: left,
            top: top,
            
            right: pageWidth - left - ele.offsetWidth,
            bottom: pageHeight - top - ele.offsetHeight
        };
    }

 


 方法2

  • // 获取元素 在 网页 中的 坐标    Test Already.
    function posInPage(obj){
        var theXOffset = document.documentElement.scrollLeft ||    // 火狐 IE9及以下滚动条是HTML的
                         window.pageXOffset ||                     // IE10及以上 window.pageXOffset
                         document.body.scrollLeft;                 // chrome滚动条是body的
        
        var theYOffset = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;
        
        var theClient = obj.getBoundingClientRect();
        
        // 在IE中,默认坐标从(2,2)开始计算,导致最终距离比其他浏览器多出两个像素,需要做以下兼容
        var top2px = document.documentElement.clientTop;
        var left2px = document.documentElement.clientLeft;
        
        var pageHeight = Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);
        var pageWidth = Math.max(document.body.scrollWidth, document.documentElement.scrollWidth);
        
        return {
            top: theClient.top - top2px + theYOffset,
            left: theClient.left - left2px + theXOffset,
            
            bottom: pageHeight - (theClient.top - top2px + theYOffset) - obj.offsetHeight,
            right: pageWidth - (theClient.left - left2px + theXOffset) - obj.offsetWidth
        };
    }

 

转载于:https://www.cnblogs.com/tianxiaxuange/p/9873933.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值