Réponses:
.offset()
retournera la position de décalage d'un élément comme un objet simple, par exemple:
var position = $(element).offset(); // position = { left: 42, top: 567 }
Vous pouvez utiliser cette valeur de retour pour positionner d'autres éléments au même endroit:
$(anotherElement).css(position)
offset()
ne renvoie pas la bonne coordonnée supérieure. Il renvoie à la place environ 300 pixels de plus que la coordonnée supérieure de l'élément dans le document. Pourquoi??
Notez que $(element).offset()
vous indique la position d'un élément par rapport au document . Cela fonctionne très bien dans la plupart des circonstances, mais dans le cas de position:fixed
vous, vous pouvez obtenir des résultats inattendus.
Si votre document est plus long que la fenêtre et que vous avez fait défiler verticalement vers le bas du document, position:fixed
la offset()
valeur de votre élément sera supérieure à la valeur attendue du montant que vous avez fait défiler.
Si vous recherchez une valeur relative à la fenêtre (fenêtre), plutôt que le document sur un élément position: fixed, vous pouvez soustraire la scrollTop()
valeur du document de la valeur de l'élément fixe offset().top
. Exemple:$("#el").offset().top - $(document).scrollTop()
Si le position:fixed
parent décalé de l' élément est le document , vous souhaitez lire à la parseInt($.css('top'))
place.
$(document).scrollTop()