jQuery: diferença entre posição () e offset ()
position()
e offset()
? Eu tentei fazer o seguinte em um evento click:
console.info($(this).position(), $(this).offset());
E parecem voltar exactamente iguais... (O elemento clicado está dentro de uma célula de tabela numa tabela)
3 answers
Isso depende do contexto em que o elemento está. position
retorna a posição em relação ao deslocamento pai, e offset
faz o mesmo em relação ao documento. Obviamente, se o documento for o pai offset, o que é frequentemente o caso, estes serão idênticos.
Se tiver um layout como este, no entanto:
<div style="position: absolute; top: 200; left: 200;">
<div id="sub"></div>
</div>
Então o offset
para sub será 200:200, mas o seu position
será 0:0.
O .o método offset () permite-nos obter a posição actual de um elemento em relação ao documento. Contrasta isto com .posição () , que recupera a posição actual em relação à posição inicial compensada. Ao posicionar um novo elemento em cima de um existente para a manipulação global (em particular, para a implementação de drag-and-drop),offset() é o mais útil.
Ambas as funções devolvem um objecto simples com duas propriedades: largura e altura.
Deslocamento () refere-se à posição relativa ao documento.
A posição () refere-se à posição relativa ao seu elemento-mãe
Mas quando a posição css do objecto for "absoluta" ambas as funções irão retornar Largura=0 & altura=0