Прерывание 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, время: 23:00. |