Возможно, вы захотите использовать offsetTop
. Конечно, вам придется зацикливаться, добавив offsetParent
offsetTop
до тех пор, пока offsetParent
не станет пустым.
Оба jQuery и Prototype сделайте это за вас.
В самом деле, вот код от прототипа:
positionedOffset: function(element) {
var valueT = 0, valueL = 0;
do {
valueT += element.offsetTop || 0;
valueL += element.offsetLeft || 0;
element = element.offsetParent;
if (element) {
if (element.tagName.toUpperCase() == 'BODY') break;
var p = Element.getStyle(element, 'position');
if (p !== 'static') break;
}
} while (element);
return Element._returnOffset(valueL, valueT);
}
//Element.getStyle returns the style or its default if not defined.
//Element._returnOffset returns the left and top as a single object
Это похоже на обману этого вопроса: Dyanamically reterive Html element (X,Y) position with JavaScript –