Wie bestimme ich den Abstand zwischen dem oberen Rand eines Div und dem oberen Rand des aktuellen Bildschirms? Ich möchte nur den Pixelabstand zum oberen Rand des aktuellen Bildschirms und nicht zum oberen Rand des Dokuments. Ich habe ein paar Dinge wie .offset()
und ausprobiert .offsetHeight
, aber ich kann mein Gehirn einfach nicht darum wickeln. Vielen Dank!
javascript
jquery
Joel Eckroth
quelle
quelle
el.getBoundingClientRect().top+window.scrollY
el.getBoundingClientRect().top
. Durch Hinzufügen der Bildlaufposition wird der Abstand zum oberen Rand des Dokuments erhöht. developer.mozilla.org/de/docs/Web/API/Element/…Antworten:
Sie können
.offset()
den Versatz im Vergleich zumdocument
Element abrufen und dann mithilfe derscrollTop
Eigenschaft deswindow
Elements ermitteln, wie weit der Benutzer auf der Seite gescrollt hat:Die
distance
Variable enthält jetzt den Abstand von der Oberseite des#my-element
Elements und der oberen Falte.Hier ist eine Demo: http://jsfiddle.net/Rxs2m/
Beachten Sie, dass negative Werte bedeuten, dass sich das Element über der oberen Falte befindet.
quelle
distance
Variable überprüfen, um festzustellen , ob ihr Wert ist,120
aber ich würde empfehlen, nach einem Bereich anstelle einer genauen Zahl zu suchen . Wenn Sie beispielsweise mit einem Mausrad scrollen, können Sie sehr gut 120 überspringen. Wenn Sie also versuchen, CSS oder etwas anderes anzuwenden, wenn sich das Element innerhalb von 120 Pixel von der oberen Falte befindet, verwenden Sie möglicherweiseif (distance < 120) { /* do something */}
. Hier ist eine aktualisierte Demo: jsfiddle.net/na5qL91oVanille:
Öffnen Sie Ihre Browserkonsole und scrollen Sie auf Ihrer Seite, um die Entfernung anzuzeigen.
quelle
distanceToTop
Rückgabe relativ (kann sogar negativ sein, wenn der Benutzer einen Bildlauf durchgeführt hat). Um dies zu berücksichtigen, verwenden Siewindow.pageYOffset + someDiv.getBoundingClientRect().top
Dies kann nur mit JavaScript erreicht werden .
Ich sehe, dass die Antwort, die ich schreiben wollte, von Luchs in Kommentaren zu der Frage beantwortet wurde .
Aber ich werde trotzdem eine Antwort schreiben, weil die Leute genau wie ich manchmal vergessen, die Kommentare zu lesen.
Wenn Sie also nur den Abstand eines Elements (in Pixel) vom oberen Rand Ihres Bildschirmfensters abrufen möchten, müssen Sie Folgendes tun:
benutze getBoundingClientRect ()
Das ist es!
Hoffe das hilft jemandem :)
quelle
Ich habe das benutzt:
Code:
quelle
Ich habe diese Funktion verwendet, um festzustellen, ob das Element im Ansichtsfenster sichtbar ist
Code:
quelle