如何获取一个dom元素的绝对位置

   应用场景:鼠标滑过某元素时,需要弹出一个信息标签,标签的位置要根据滑过元素的位置而定。

 

   难点:目标元素并不一定是absolute的,因此不能简单的通过top,left这种属性获取。元素可能包裹在n个父元素内,需要把这些因素都考虑进去。

 

  解决思路:先获取该元素的offsetLeft和offsetTop,然后取它的offsetParent,并向外循环,累加这些left和top,最后得到的就是元素的绝对位置。

 

  代码:

var obj = xxx; //这个元素就是目标元素,你可以用任何方式将它传入。

var w = obj.offsetWidth, h = obj.offsetHeight;

//从目标元素开始向外遍历,累加top和left值
for (var t = obj.offsetTop, l = obj.offsetLeft; obj = obj.offsetParent;) {
    	t += obj.offsetTop;
        l += obj.offsetLeft;
}
    
 

 

 

 

你可能感兴趣的:(dom)