获取元素相对于文档的位置

获取元素相对于文档的当前上/左坐标


当需要获得元素相对于文档的顶部和左侧位置时,我们可以先通过getBoundingClientRect()确定屏幕上元素的X/Y坐标。 然后,将滚动位置和获得的屏幕坐标进行相加,如下:


function offset(el) {
    var rect = el.getBoundingClientRect(),
    scrollLeft = window.pageXOffset || document.documentElement.scrollLeft,
    scrollTop = window.pageYOffset || document.documentElement.scrollTop;
    return { top: rect.top + scrollTop, left: rect.left + scrollLeft }
}

// example use
var div = document.querySelector('div');
var divOffset = offset(div);
console.log(divOffset.left, divOffset.top);
      

该结果等同于jQuery的$.offset()getBoundingClientRect()是一个非常有用的跨浏览器安全的方法,该方法返回相对于视口的任何元素的顶部,右侧底部和左侧位置。