Respostas:
.offset()
retornará a posição de deslocamento de um elemento como um objeto simples, por exemplo:
var position = $(element).offset(); // position = { left: 42, top: 567 }
Você pode usar esse valor de retorno para posicionar outros elementos no mesmo local:
$(anotherElement).css(position)
offset()
não retorna a coordenada superior adequada. Ele retorna cerca de 300 pixels a mais do que a coordenada superior do elemento no documento. Por quê??
Observe que $(element).offset()
indica a posição de um elemento em relação ao documento . Isso funciona muito bem na maioria das circunstâncias, mas position:fixed
você pode obter resultados inesperados.
Se o seu documento for maior que a viewport e você tiver rolado verticalmente em direção à parte inferior do documento, position:fixed
o offset()
valor do seu elemento será maior que o valor esperado pela quantidade que você rolou.
Se você estiver procurando por um valor relativo à viewport (janela), em vez do documento em uma posição: elemento fixo, poderá subtrair o scrollTop()
valor do documento do valor do elemento fixo offset().top
. Exemplo:$("#el").offset().top - $(document).scrollTop()
Se o position:fixed
pai de deslocamento do elemento for o documento , você deseja lerparseInt($.css('top'))
.
$(document).scrollTop()