Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.08.2016, 18:15
Новичок на форуме
Отправить личное сообщение для anarmus Посмотреть профиль Найти все сообщения от anarmus
 
Регистрация: 15.08.2016
Сообщений: 2

Прерывание 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);}

Не работает.
Ответить с цитированием
  #2 (permalink)  
Старый 15.08.2016, 19:10
Новичок на форуме
Отправить личное сообщение для anarmus Посмотреть профиль Найти все сообщения от anarmus
 
Регистрация: 15.08.2016
Сообщений: 2

Решил вот так:
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);
Ответить с цитированием
  #3 (permalink)  
Старый 15.08.2016, 23:00
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

anarmus, ты квадратное колесо изобрел. Юзер не сможет отменить свое желание "наверх" из-за скорости прокрутки. Ну с какого места он захочет крутить сам, если у него со страшной скоростью все летит мимо ушей? Кстати, в процентах мотай, тогда любая прокрутка всегда будет укладываться в одинаковый промежуток времени и плавно останавливаться наверху.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как восстановить инфу из sessionStorage при выполнении определенных условий? ligisayan jQuery 1 26.06.2015 09:34
Смена класса у отдельного div при нажатии на ссылку Maxim-Ra Элементы интерфейса 6 15.02.2015 12:20
Изменение прозрачности при клике AJIUK jQuery 8 09.03.2014 16:00
при нажатии на раздел меню поворачивается маркер Сергей545 Элементы интерфейса 5 08.12.2013 22:15
проблема с событиями при работе с Ext.extend slavik27 ExtJS 1 04.09.2011 13:05