Координаты элемента определяются посредством свойств offsetTop и offsetLeft элементов. Они содержат значение координат X и Y относительно элемента, на который указывает свойство offsetParent. По идее, это свойство должно указывать на родительский элемент, однако на практике это не всегда так, например, в Firefox оно указывает на корневой элемент, а в Opera на непосредственного родителя. Таким образом при определении координат элемента нужно учитывать offsetParent. Ниже представлены функции, которые выполняют эту задачу:
function pageX(elem) {
return elem.offsetParent ?
elem.offsetLeft + pageX( elem.offsetParent ) :
elem.offsetLeft;
}
// Определение координаты элемента по вертикали
function pageY(elem) {
return elem.offsetParent ?
elem.offsetTop + pageY( elem.offsetParent ) :
elem.offsetTop;
}Если свойство offsetParent элемента указывает на корневой элемента документа, то сразу же возвращается значение свойств offsetTop или offsetLeft, если же offsetParent не является корневым элементом, то рекурсивно проходятся все элементы вплоть до корневого.
14 мая 2008 в 15:19
Столкнулся с такой проблемой - если наш елемент лежит в ДИВе, а тот со скролом, то тут уже этот скрипт неможет точно вычислить координаты