Ответы:
.offset() вернет позицию смещения элемента в виде простого объекта, например:
var position = $(element).offset(); // position = { left: 42, top: 567 }
Вы можете использовать это возвращаемое значение, чтобы расположить другие элементы в том же месте:
$(anotherElement).css(position)
offset()не возвращает правильную верхнюю координату. Вместо этого он возвращает примерно на 300 пикселей больше, чем верхняя координата элемента в документе. Почему??
Обратите внимание, что $(element).offset()говорит вам положение элемента относительно документа . Это прекрасно работает в большинстве случаев, но в случае position:fixedвы можете получить неожиданные результаты.
Если документ больше , чем видовая и вы прокручивать по вертикали по направлению к нижней части документа, то вашему position:fixedэлемент offset()значение будет больше ожидаемым значения на сумму , которую вы прокручиваетесь.
Если вы ищете значение относительно окна просмотра (окна), а не документа с фиксированным элементом position: вы можете вычесть значение документа из scrollTop()значения фиксированного элемента offset().top. Пример:$("#el").offset().top - $(document).scrollTop()
Если position:fixedродительский элемент смещения элемента является документом , parseInt($.css('top'))вместо этого вы хотите прочитать .
$(document).scrollTop()