Я не верю, что это возможно с помощью мультимедийного запроса CSS, но я знаю, что высоту прокрутки можно найти в JavaScript с помощью window.pageYOffset
. Если вы хотите запустить эту величину через функцию каждый раз, когда пользователи прокручивать вверх или вниз на странице, вы могли бы сделать что-то вроде
window.onscroll = function() {
scrollFunctionHere(window.pageYOffset);
};
Или просто:
window.onscroll = scrollFunctionHere;
Если сама функция проверил значение window.pageYOffset
.
Для получения более подробных рекомендаций по использованию window.onscroll
в JavaScript см. mynameistechno's answer.
Важное примечание об эффективности: запуск функции каждый раз, когда выдается событие прокрутки, может прорваться через циклы CPU, если в обратном вызове выполняется что-то нетривиальное. Вместо этого, это хорошая практика, чтобы разрешить обратный вызов работать столько раз в секунду. Это называется «debouncing».
Простой код обработчика прокрутки прокрутки ниже. Обратите внимание на то, как текст переключается между «HELLO» и «Мир» каждые 250мс, а не каждого отдельного кадра:
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 Хороший ответ. – iConnor
Не работает. См. Мой ответ – mynameistechno
Я исправил ошибку заглавия в своем ответе и добавил что-то, ссылаясь на ваш ответ, для получения дополнительной информации об использовании 'window.onscroll'. Только для записи я решил не добавлять больше информации в свой ответ, потому что я предполагаю, что разработчики, которые хотели использовать технику JavaScript, проведут собственное исследование «window.onscroll». @mynameistechno –