Non credo sia possibile con una query multimediale CSS, ma so che l'altezza di scorrimento può essere trovata in JavaScript utilizzando window.pageYOffset
. Se si voleva correre questo valore tramite una funzione ogni volta che gli utenti scorrono verso l'alto o verso il basso in una pagina, si potrebbe fare qualcosa di simile
window.onscroll = function() {
scrollFunctionHere(window.pageYOffset);
};
O semplicemente:
window.onscroll = scrollFunctionHere;
Se la funzione stessa controllò la valore di window.pageYOffset
.
Per ulteriori consigli su come utilizzare window.onscroll
in modo efficiente in JavaScript, fare riferimento a mynameistechno's answer.
Nota importante sull'efficienza: l'esecuzione di una funzione ogni volta che viene emesso un evento di scorrimento può far scorrere i cicli della CPU se nel callback viene eseguita un'operazione non banale. Invece, è buona norma consentire solo a un callback di essere eseguito tante volte al secondo. Questo è stato definito "debouncing".
Semplice codice per il gestore di eventi di scorrimento debounced di seguito. Si noti come il testo si alterna tra "Ciao" e "mondo" ogni 250ms, piuttosto che ogni singolo fotogramma:
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>
fonte
2013-06-04 16:26:35
+1 buona risposta. – iConnor
Non funziona. Vedere la mia risposta – mynameistechno
Ho corretto l'errore di capitalizzazione nella mia risposta e aggiunto qualcosa che si riferisce alla tua risposta per ulteriori informazioni sull'uso di 'window.onscroll'. Per la cronaca, ho scelto di non aggiungere più informazioni alla mia risposta perché presumo che gli sviluppatori che volevano utilizzare la tecnica JavaScript avrebbero fatto le loro ricerche su 'window.onscroll'. @mynameistechno –