Come posso trovare la posizione assoluta di un elemento usando jQuery?


399

Esiste un modo per trovare la posizione assoluta di un elemento, ovvero relativamente all'inizio della finestra, usando jQuery?

Risposte:


652

.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)

90
Dimentico sempre questo e trovo di nuovo il tuo post quando google: p
Aren,

16
Questo non sembra sempre restituire la posizione assoluta a causa delle differenze nei confini, ecc.
Tom,

8
Sto usando Chrome e il offset()non restituisce la coordinata superiore corretta. Restituisce invece circa 300 pixel in più rispetto alla coordinata superiore dell'elemento nel documento. Perché??
SoLoGHoST,

1
chrome, FF e IE stanno dando risultati diversi :(
Rizwan Mumtaz

3
@Aren dimentico sempre questo e trovo sempre divertente il tuo commento :)
Alex

198

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:fixedtu possa ottenere risultati inaspettati.

Se il tuo documento è più lungo del viewport e hai fatto scorrere verticalmente verso la parte inferiore del documento, position:fixedil 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:fixedgenitore offset dell'elemento è il documento , si desidera parseInt($.css('top'))invece leggere .


8
Stavo cercando esattamente questo! Per il noob come me: il valore da sottrarre è$(document).scrollTop()
Dr. Gianluigi Zane Zanettini,

3
Eccezionale! Questa dovrebbe essere la risposta migliore!
Shivanshu Goyal,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.