js實現jquery的offset()


用過jQuery的offset()的同學都知道

offset().top或offset().left很方便地取得元素相對於整個頁面的偏移。

 

而在js里,沒有這樣直接的方法,節點的屬性offsetTop可以獲得該節點相對於父節點的相對偏移

但不能直接獲得其絕對偏移,我們可用節點逐層遞歸向上來相加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里的值
}

 

使用時,則如:

var a = document.getElementById('a');
//getOffset(a).top
//getOffset(a).left

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM