Ich glaube nicht, dass es mit einer CSS-Medienabfrage möglich ist, aber ich weiß, dass die Scroll-Höhe in JavaScript mit window.pageYOffset
gefunden werden kann. Wenn Sie diesen Wert durch eine Funktion jedes Mal der Benutzer gescrollt nach oben oder unten auf einer Seite ausführen möchten, können Sie so etwas wie
window.onscroll = function() {
scrollFunctionHere(window.pageYOffset);
};
Oder einfach tun:
window.onscroll = scrollFunctionHere;
Wenn die Funktion selbst die aufgegebenen Wert von window.pageYOffset
.
Weitere Hinweise zur effizienten Verwendung von window.onscroll
in JavaScript finden Sie unter mynameistechno's answer.
Wichtiger Hinweis zur Effizienz: Das Ausführen einer Funktion jedes Mal, wenn ein Scroll-Ereignis ausgegeben wird, kann CPU-Zyklen durchbrechen, wenn im Callback nicht-triviale Vorgänge ausgeführt werden. Stattdessen sollten Sie zulassen, dass ein Rückruf nur so oft pro Sekunde ausgeführt wird. Dies wurde als "Entprellen" bezeichnet.
Einfach entprellt Scroll Event Handler-Code unten. Beachten Sie, wie der Text wechselt zwischen „HALLO“ und „Welt“ alle 250ms, anstatt jeden einzelnen Rahmen:
var outputTo = document.querySelector(".output");
var timeout_debounce;
window.addEventListener("scroll", debounce);
function debounce(event) {
if(timeout_debounce) {
return;
}
timeout_debounce = setTimeout(clearDebounce, 250);
// Pass the event to the actual callback.
actualCallback(event);
}
function clearDebounce() {
timeout_debounce = null;
}
function actualCallback(event) {
// Perform your logic here with no CPU hogging.
outputTo.innerText = outputTo.innerText === "HELLO"
? "WORLD"
: "HELLO";
}
p {
padding: 40vh;
margin: 20vh;
background: blue;
color: white;
}
<p class="output">Test!</p>
+1 Gute Antwort. – iConnor
Funktioniert nicht. Siehe meine Antwort – mynameistechno
Ich habe den Großbuchungsfehler in meiner Antwort behoben und etwas hinzugefügt, das sich auf Ihre Antwort bezieht, um weitere Informationen zur Verwendung von 'window.onscroll' zu erhalten. Nur zur Erinnerung, ich habe beschlossen, meiner Antwort keine weiteren Informationen hinzuzufügen, da ich davon ausgehe, dass Entwickler, die die JavaScript-Technik verwenden wollten, ihre eigenen Recherchen zu 'window.onscroll' durchführen würden. @mynameistechno –