用過jQuery的offset()的同窗都知道spa
offset().top或offset().left很方便地取得元素相對於整個頁面的偏移。code
而在js裏,沒有這樣直接的方法,節點的屬性offsetTop能夠得到該節點相對於父節點的相對偏移blog
但不能直接得到其絕對偏移,咱們可用節點逐層遞歸向上來相加offsetTop來得到絕對偏移。遞歸
function getOffset(Node, offset) { if (!offset) { offset = {}; offset.top = 0; offset.left = 0; } if (Node == document.body) {//當該節點爲body節點時,結束遞歸 return offset; } offset.top += Node.offsetTop; offset.left += Node.offsetLeft; return getOffset(Node.parentNode, offset);//向上累加offset裏的值 }
使用時,則如:get
var a = document.getElementById('a'); //getOffset(a).top //getOffset(a).left