Ответы:
Являются ли они одинаковыми, зависит от контекста.
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-позиция объекта является «абсолютной», обе функции вернут width = 0 и height = 0