Get the position of an element relative to the document

Get the current top/left coordinates of an element relative to the document.

To get the top and left position of an element relative to the document, we first determine the X/Y coordinates of an element on the screen via getBoundingClientRect(). We then add scroll top/left position to these coordinates. Helper function:

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

// example use
var div = document.querySelector('div');
var divOffset = offset(div);

The result of this helpers is equal to jQuery's $.offset(). getBoundingClientRect() is a very useful, cross browser safe method that returns top, right bottom, and left position of any element relative to the viewport.