Was ist der einfachste Weg, um eine Elementposition relativ zum Dokument- / Körper- / Browserfenster zu bestimmen?
Im Moment verwende ich .offsetLeft/offsetTop
, aber diese Methode gibt Ihnen nur die Position relativ zum übergeordneten Element an. Sie müssen also bestimmen, wie viele Eltern zum body-Element gehören, um die Position zu kennen, die sich auf die Position body / browser window / document bezieht.
Diese Methode ist auch zu umständlich.
javascript
dom
einstein
quelle
quelle
Sie können nach oben und links gelangen, ohne DOM wie folgt zu durchlaufen:
quelle
<html>
Element.Mit können Sie die
element.getBoundingClientRect()
Elementposition relativ zum Ansichtsfenster abrufen.Verwenden Sie dann
document.documentElement.scrollTop
, um den Versatz des Ansichtsfensters zu berechnen.Die Summe der beiden ergibt die Elementposition relativ zum Dokument:
quelle
document.documentElement.scrollTop
funktioniert nicht in Safari, verwenden Siewindow.scrollY
stattdessenIch schlage vor, zu verwenden
wie hier vorgeschlagen anstelle der manuellen Offsetberechnung über offsetLeft , offsetTop und offsetParent . wie hier vorgeschlagen Unter bestimmten Umständen * führt die manuelle Durchquerung zu ungültigen Ergebnissen. Siehe diesen Plunker: http://plnkr.co/pC8Kgj
* Wenn sich das Element innerhalb eines scrollbaren übergeordneten Elements mit statischer (= Standard-) Positionierung befindet.
quelle
offsetLeft
undoffsetTop
nicht berücksichtigt, was auch dergetBoundingClientRect()
Fall ist. In diesem Fall sind die Ergebnisse möglicherweise ungültig. Wenn Sie es brauchen, können Sie den Versatz eines Elements relativ zum übergeordneten Element (wieoffsetLeft
) mit abrufen(element.getBoundingClientRect().left - parent.getBoundingClientRect().left)
.document-offset
( Skript von Drittanbietern ) ist interessant und scheint die Ansätze der anderen Antworten hier zu nutzen.Beispiel:
quelle
Ich habe festgestellt, dass die folgende Methode am zuverlässigsten ist, wenn Kantenfälle behandelt werden, die offsetTop / offsetLeft auslösen.
quelle
Für diejenigen, die die x- und y-Koordinaten verschiedener Positionen eines Elements relativ zum Dokument erhalten möchten.
Verwendung
getCoords(document.querySelector('selector'), 'center')
getCoords(document.querySelector('selector'), 'bottom right')
getCoords(document.querySelector('selector'), 'top center')
quelle
Wenn es Ihnen nichts ausmacht, jQuery zu verwenden, können Sie die
offset()
Funktion verwenden. Weitere Informationen zu dieser Funktion finden Sie in der Dokumentation .quelle
http://www.quirksmode.org/js/findpos.html Erklärt den besten Weg, alles in allem sind Sie auf dem richtigen Weg, um die Offsets zu finden und den Baum der Eltern zu durchqueren.
quelle