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

364

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

Теги:

2 ответа

545
Лучший ответ

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

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

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

$(anotherElement).css(position)
  • 82
    Я всегда забываю это и снова нахожу ваш пост, когда я гуглю: p
  • 16
    Это не всегда возвращает абсолютную позицию из-за различий в границах и т. Д.
Показать ещё 7 комментариев
172

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

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

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

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

  • 8
    Я искал именно это! Для нуба, как я: вычитаемое значение равно $(document).scrollTop()
  • 2
    Потрясающие! Это должен быть главный ответ!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню