Вы можете добавить два свойства к Element.prototype
, чтобы получить верхнюю / левую часть любого элемента.
Object.defineProperty( Element.prototype, 'documentOffsetTop', {
get: function () {
return this.offsetTop + ( this.offsetParent ? this.offsetParent.documentOffsetTop : 0 );
}
} );
Object.defineProperty( Element.prototype, 'documentOffsetLeft', {
get: function () {
return this.offsetLeft + ( this.offsetParent ? this.offsetParent.documentOffsetLeft : 0 );
}
} );
Это называется так:
var x = document.getElementById( 'myDiv' ).documentOffsetLeft;
Вот demo сравнивая результаты с jQuery offset().top
и .left
: http://jsfiddle.net/ThinkingStiff/3G7EZ/