Как я могу получить абсолютное положение объекта на странице в Javascript? [дубликат]
этот вопрос уже есть ответ здесь:
- получить позицию (X,Y) HTML-элемента 24 ответов
Я хочу получить абсолютную позицию X,y объекта на странице в Javascript. Как я могу это сделать?
пробовал obj.offsetTop
и obj.offsetLeft
, но те только дают положение относительно родителя элемент. Я думаю, что я мог бы перебрать и добавить смещение родителя, и смещение его родителя, и так далее, пока я не доберусь до объекта без родителя, но похоже, что должен быть лучший способ. Гуглинг не так много появился, и даже в этом случае поиск по сайту ничего не находит.
кроме того, я не могу использовать jQuery.
2 ответа:
var cumulativeOffset = function(element) { var top = 0, left = 0; do { top += element.offsetTop || 0; left += element.offsetLeft || 0; element = element.offsetParent; } while(element); return { top: top, left: left }; };
(метод бесстыдно украден из PrototypeJS; стиль кода, имена переменных и возвращаемое значение изменены для защиты невинных)
я бы посоветовал использовать элемент.getBoundingClientRect().
https://developer.mozilla.org/en-US/docs/Web/API/element.getBoundingClientRect
резюме
возвращает объект текстового прямоугольника, который заключает в себе группу текста прямоугольники.
синтаксис
var rectObject = object.getBoundingClientRect();
возвращает
возвращенный значение TextRectangle