Risposte:
.offset()
restituirà la posizione di offset di un elemento come un oggetto semplice, ad esempio:
var position = $(element).offset(); // position = { left: 42, top: 567 }
È possibile utilizzare questo valore restituito per posizionare altri elementi nello stesso punto:
$(anotherElement).css(position)
offset()
non restituisce la coordinata superiore corretta. Restituisce invece circa 300 pixel in più rispetto alla coordinata superiore dell'elemento nel documento. Perché??
Nota che $(element).offset()
ti dice la posizione di un elemento rispetto al documento . Funziona alla grande nella maggior parte dei casi, ma nel caso position:fixed
tu possa ottenere risultati inaspettati.
Se il tuo documento è più lungo del viewport e hai fatto scorrere verticalmente verso la parte inferiore del documento, position:fixed
il offset()
valore del tuo elemento sarà maggiore del valore atteso dell'importo che hai fatto scorrere.
Se stai cercando un valore relativo alla finestra (finestra), piuttosto che al documento in una posizione: elemento fisso, puoi sottrarre il scrollTop()
valore del documento dal valore dell'elemento fisso offset().top
. Esempio:$("#el").offset().top - $(document).scrollTop()
Se il position:fixed
genitore offset dell'elemento è il documento , si desidera parseInt($.css('top'))
invece leggere .
$(document).scrollTop()