应用场景:鼠标滑过某元素时,需要弹出一个信息标签,标签的位置要根据滑过元素的位置而定。
难点:目标元素并不一定是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; }