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

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

Ответ 1

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

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

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

$(anotherElement).css(position)

Ответ 2

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

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

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

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