Прерывание requestAnimationFrame при onwheel
Всем привет! Делал кнопку "Вверх", которая, что логично, скролит страницу вверх до нулевого пикселя. Ссылка:
<a href="#" id="scrollUp">Наверх</a> И скрипт:
function scrollUp() {
window.scrollBy(0,-20);
if (window.pageYOffset > 0) {requestAnimationFrame(scrollUp);}
}
document.getElementById('scrollUp').addEventListener('click', function(e) {
e.preventDefault();
scrollUp();
}, false);
Теперь вопрос, как прерывать скрол (анимацию скрола), если пользователь начал крутить колёсико мышки, т.е. скролить самостоятельно? Пробовал вот так:
if ((window.onwheel != undefined) || (window.pageYOffset == 0)) {return false;}
else {requestAnimationFrame(scrollUp);}
Не работает. |
Решил вот так:
function scrollUp() {
window.scrollBy(0,-20);
document.addEventListener("wheel", function() {a = 0;}, false);
if (( a == 0) || (window.pageYOffset == 0)) {return;}
else {requestAnimationFrame(scrollUp);}
}
document.getElementById('scrollUp').addEventListener('click', function(e) {
e.preventDefault();
a=1;
scrollUp();
}, false);
|
anarmus, ты квадратное колесо изобрел. Юзер не сможет отменить свое желание "наверх" из-за скорости прокрутки. Ну с какого места он захочет крутить сам, если у него со страшной скоростью все летит мимо ушей? Кстати, в процентах мотай, тогда любая прокрутка всегда будет укладываться в одинаковый промежуток времени и плавно останавливаться наверху.
|
| Часовой пояс GMT +3, время: 19:28. |