javascript – 当身体可以相对定位时,如何计算dom元素的页面位置?

前端之家收集整理的这篇文章主要介绍了javascript – 当身体可以相对定位时,如何计算dom元素的页面位置?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个奇怪的错误,当我将主体设置为具有39px边距的相对定位元素时开始显示(我正在为页面顶部的工具栏腾出空间).

无论如何 – 如果你看一下大多数网站如何告诉你计算页面元素的位置,你会看到如下代码

function getPos(elt) {
    var pt = [0,0];

    while (elt.offsetParent !== null) {
        pt[0] += elt.offsetLeft;
        pt[1] += elt.offsetTop;
        elt = elt.offsetParent;
    }
    return pt;
}

这很好,即使你的< body>标签有一个保证金.但是,如果你的身体也是位置:相对,那么这会返回一个太小的值 – 它不包括body元素的边距.

我如何1)检测身体是否相对定位,2)找到我们的边距是什么,以便我可以将它们重新添加

请注意,我需要Page坐标,因此我可以将它们与MouseEvent PageX,PageY进行比较.

解决方法

如果你只限于在“现代”浏览器中工作,就像zepto.js实现那样,你可以得到一个小得多的.offset()函数实现:
offset: function(){
      var obj = this[0].getBoundingClientRect();
      return {
        left: obj.left + document.body.scrollLeft,top: obj.top + document.body.scrollTop,width: obj.width,height: obj.height
      };
    }

https://github.com/madrobby/zepto/blob/master/src/zepto.js

如果getBoundingClientRect可用,那或多或少是jQuery所做的.

猜你在找的JavaScript相关文章