刚开始写了个递归:

function getOffsetPosition(element, x, y){
    x = x || 0;
    y = y || 0;
    if(element.offsetParent != null){
        return getOffsetPosition(element.offsetParent, element.offsetLeft + x, element.offsetTop + y);
    }else{
        return {
            x: x,
            y: y
        }
    }
};

getOffsetPosition(document.getElementById('id'));
// { x: 100, y: 666 }

其实JavaScript已经提供了获取元素位置的方法:

getBoundingClientRect

这个方法能获取元素距离窗口左边和顶边的距离。这样一来,只要再加上窗口已经滚去的距离,就是元素到页面左边和顶边的距离了:

x: ele.getBoundingClientRect().x + window.scrollX;
y: ele.getBoundingClientRect().y + window.scrollY;

基础知识掌握的太太太太差……

标签: none