使用jQuery中的offset()的方法 offset().top或offset().left很方便地取得元素相对于整个页面的偏移,而js不能获得绝对偏移,因此采用节点递归的方式来获得绝对偏移,代码具体如下:
function getOffset(Node, offset) { if (!offset) { offset = {}; offset.top = 0; offset.left = 0; } //当该节点为body节点时,结束递归 if (Node == document.body) { return offset; } offset.top += Node.offsetTop; offset.left += Node.offsetLeft; return getOffset(Node.parentNode, offset); }
使用方式如下:
var a = document.getElementById('a'); getOffset(a).top getOffset(a).left