Как найти абсолютную позицию элемента с помощью jQuery?

399

Есть ли способ найти абсолютную позицию элемента, то есть относительно начала окна, используя jQuery?

Akshat
источник

Ответы:

652

.offset() вернет позицию смещения элемента в виде простого объекта, например:

var position = $(element).offset(); // position = { left: 42, top: 567 }

Вы можете использовать это возвращаемое значение, чтобы расположить другие элементы в том же месте:

$(anotherElement).css(position)
Свежий полумесяц
источник
90
Я всегда забываю это и снова нахожу ваш пост, когда я гуглю: p
Aren
16
Это не всегда возвращает абсолютную позицию из-за различий в границах и т. Д.
Том
8
Я использую хром и offset()не возвращает правильную верхнюю координату. Вместо этого он возвращает примерно на 300 пикселей больше, чем верхняя координата элемента в документе. Почему??
SoLoGHoST
1
Chrome, FF и IE дают разные результаты :(
Ризван Мумтаз
3
@ Я всегда забываю это и нахожу твой комментарий забавным каждый раз :)
Alex
198

Обратите внимание, что $(element).offset()говорит вам положение элемента относительно документа . Это прекрасно работает в большинстве случаев, но в случае position:fixedвы можете получить неожиданные результаты.

Если документ больше , чем видовая и вы прокручивать по вертикали по направлению к нижней части документа, то вашему position:fixedэлемент offset()значение будет больше ожидаемым значения на сумму , которую вы прокручиваетесь.

Если вы ищете значение относительно окна просмотра (окна), а не документа с фиксированным элементом position: вы можете вычесть значение документа из scrollTop()значения фиксированного элемента offset().top. Пример:$("#el").offset().top - $(document).scrollTop()

Если position:fixedродительский элемент смещения элемента является документом , parseInt($.css('top'))вместо этого вы хотите прочитать .

Том Оже
источник
8
Я искал именно это! Для новичка, как я: ценность, которую нужно вычесть,$(document).scrollTop()
доктор Джанлуиджи Зейн Занеттини
3
Потрясающие! Это должен быть главный ответ!
Шиваншу Гоял