Antworten:
.offset()
gibt die Versatzposition eines Elements als einfaches Objekt zurück, z.
var position = $(element).offset(); // position = { left: 42, top: 567 }
Mit diesem Rückgabewert können Sie andere Elemente an derselben Stelle positionieren:
$(anotherElement).css(position)
offset()
gibt nicht die richtige obere Koordinate zurück. Stattdessen werden etwa 300 Pixel mehr als die oberste Koordinate des Elements im Dokument zurückgegeben. Warum??
Beachten Sie, $(element).offset()
dass Sie die Position eines Elements relativ zum Dokument angeben . Dies funktioniert in den meisten Fällen hervorragend, position:fixed
kann jedoch zu unerwarteten Ergebnissen führen.
Wenn Ihr Dokument länger als das Ansichtsfenster ist und Sie vertikal zum unteren Rand des Dokuments gescrollt haben, ist position:fixed
der offset()
Wert Ihres Elements um den Betrag, den Sie gescrollt haben , größer als der erwartete Wert.
Wenn Sie nach einem Wert suchen , der sich auf das Ansichtsfenster (Fenster) bezieht , und nicht auf das Dokument an einer Position: festes Element, können Sie den scrollTop()
Wert des Dokuments vom Wert des festen Elements abziehen offset().top
. Beispiel:$("#el").offset().top - $(document).scrollTop()
Wenn das position:fixed
übergeordnete Element des Elements das Dokument ist , möchten Sie parseInt($.css('top'))
stattdessen lesen .
$(document).scrollTop()