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