js實現jquery的offset()

用過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
相關文章
相關標籤/搜索