Respostas:
Se são iguais, depende do contexto.
position
retorna um {left: x, top: y}
objeto em relação ao pai de deslocamento
offset
retorna um {left: x, top: y}
objeto relativo ao documento .
Obviamente, se o documento for o pai de deslocamento, o que geralmente ocorre, eles serão idênticos. O pai de deslocamento é "o elemento contendo o mais próximo posicionado".
Por exemplo, com este documento:
<div style="position: absolute; top: 200; left: 200;">
<div id="sub"></div>
</div>
Então o $('#sub').offset()
será {left: 200, top: 200}
, mas .position()
será {left: 0, top: 0}
.
sub
um posicionamento absoluto a 0: 0, ele estará no canto superior esquerdo do pai de deslocamento.
.position
atualizado em 1.12.0 => github.com/jquery/jquery/issues/1708
O método .offset () nos permite recuperar a posição atual de um elemento em relação ao documento . Compare isso com .position () , que recupera a posição atual em relação ao pai de deslocamento . Ao posicionar um novo elemento em cima de um elemento existente para manipulação global (em particular, para implementar arrastar e soltar), .offset () é o mais útil.
Ambas as funções retornam um objeto simples com duas propriedades: largura e altura.
offset () refere-se à posição relativa ao documento.
position () refere-se à posição relativa ao seu elemento pai
MAS quando a posição css do objeto for "absoluta", ambas as funções retornarão width = 0 & height = 0