2014-01-05 4 views
1

У меня есть пользовательский слайдер. И я хочу сделать такое. Когда пользователь прокручивается вниз, он должен анимировать прокрутку вниз до следующего слайда, и во время этой анимации пользователь не сможет прокручивать. Но у меня проблема. Прокрутка событие вызывается несколько раз, и после того, как одна анимация сделана, вторая один запускается, и т.д.Анимация scrollTop на событии прокрутки

Вот мой пример кода

$(window).scroll(function(e){ 
    if($scrolling){ 
    e.preventDefault(); 
    e.stopPropagation(); 
    } 
}) 

$(window).on('mousewheel', function(event){ 
    $scrolling = true 
    $('html, body').animate({scrollTop: 'my position here' }, {done: function(){ $scrolling = false; } }, 1000) 
}); 

Что я делаю неправильно? Заранее спасибо!

+0

Если вы хотите, чтобы прокрутить всю высоту страницы, вы можете использовать [One Page Scroll] (http://github.com/peachananr/onepage-scroll) или [FullPage.js] (http://alvarotrigo.com/fullPage/). В противном случае вы, вероятно, будете использовать '.animate' и' .stop' и добавить/вычесть заданное значение того, как далеко вы хотите прокручивать –

ответ

0

Вы можете контролировать все, от одной только mousewheel события ..

var $scrolling = false; 
$(window).on('mousewheel', function(event){ 
    if (!$scrolling){ 
    $scrolling = true; 
    $('html, body').animate({scrollTop: 'my position here' }, {done: function(){ $scrolling = false; } }, 1000); 
    } 
}); 
Смежные вопросы