Odpowiedzi:
To, czy są takie same, zależy od kontekstu.
position
zwraca {left: x, top: y}
obiekt względem odsuniętego rodzica
offset
zwraca {left: x, top: y}
obiekt względem dokumentu .
Oczywiście, jeśli dokument jest rodzicem offsetowym, co często ma miejsce, będą one identyczne. Przesunięcie rodzic jest „najbliżej usytuowane elementu zawierającego”.
Na przykład w tym dokumencie:
<div style="position: absolute; top: 200; left: 200;">
<div id="sub"></div>
</div>
Wtedy $('#sub').offset()
będzie {left: 200, top: 200}
, ale .position()
będzie {left: 0, top: 0}
.
sub
bezwzględne pozycjonowanie 0: 0, to będzie w lewym górnym rogu nadrzędnego offsetu.
.position
został zaktualizowany w 1.12.0 => github.com/jquery/jquery/issues/1708
Metoda .offset () pozwala nam pobrać bieżącą pozycję elementu względem dokumentu . Porównaj to z .position () , która pobiera bieżącą pozycję względem rodzica przesunięcia . Podczas umieszczania nowego elementu na istniejącym do globalnej manipulacji (w szczególności do implementacji przeciągnij i upuść), bardziej przydatne jest .offset ().
Źródło: http://api.jquery.com/offset/
Obie funkcje zwracają zwykły obiekt o dwóch właściwościach: szerokość i wysokość.
offset () odnosi się do pozycji względem dokumentu.
position () odnosi się do pozycji względem jej elementu macierzystego
ALE gdy pozycja css obiektu jest „bezwzględna”, obie funkcje zwrócą szerokość = 0 i wysokość = 0