Відповіді:
Чи вони однакові, залежить від контексту.
position
повертає {left: x, top: y}
об'єкт відносно батьківського зміщення
offset
повертає {left: x, top: y}
об'єкт відносно документа .
Очевидно, якщо документ є батьківським зміщенням, що часто буває, вони будуть ідентичними. База зсуву - це "найближчий розміщений містить елемент".
Наприклад, із цим документом:
<div style="position: absolute; top: 200; left: 200;">
<div id="sub"></div>
</div>
Тоді $('#sub').offset()
буде воля {left: 200, top: 200}
, але її .position()
буде {left: 0, top: 0}
.
sub
абсолютне позиціонування 0: 0, то воно буде у верхньому лівому куті зсуву батьків.
.position
отримав оновлений в 1.12.0 => github.com/jquery/jquery/issues/1708
Метод .offset () дозволяє отримати поточне положення елемента відносно документа . Порівнюйте це з .position () , який отримує поточне положення відносно зсуву . Розміщуючи новий елемент поверх існуючого для глобальних маніпуляцій (зокрема, для здійснення перетягування), .offset () є більш корисним.
Джерело: http://api.jquery.com/offset/
Обидві функції повертають звичайний об'єкт з двома властивостями: ширина та висота.
offset () позначає положення відносно документа.
position () позначає положення відносно його батьківського елемента
АЛЕ, коли позиція css об'єкта "абсолютна", обидві функції повернуть ширину = 0 та висоту = 0