Как отключить прокрутку до завершения анимации?
Я использую этот код для прокрутки к определенному элементу на моей странице:
$("html, body").animate({scrollTop: $(".myDiv").offset().top}, 300);
Он работает, но есть одна проблема: когда пользователь прокручивается вниз, пока прокручивается script, наблюдается некоторая ошибка, потому что одновременно есть две команды прокрутки в разных направлениях - звучит логично для меня.
Я проверил некоторые другие сайты с такой функцией прокрутки, нет никакого искажения. Так что трюк, чтобы предотвратить это?
Ответы
Ответ 1
Это ошибка jQuery, когда вы используете анимацию с прокруткой, хорошее обнаружение.
Я исследовал, как отключить прокрутку и найти этот вопрос: Как временно отключить прокрутку?
Вот jsFiddle. Вы увидите после нажатия; прокрутка прокрутки пользователя до завершения анимации.
$('.myDiv').click(function(){
disable_scroll();
$('html, body').stop().animate({ scrollTop: 0 }, 700,function() {
enable_scroll();
});
});
edit: благодаря galambalazs btw.
Ответ 2
идея - попробуйте подключиться к событию прокрутки и используйте http://api.jquery.com/stop/, чтобы остановить анимацию
.. плохая идея..
та же проблема с решением - разрешить прокрутку пользователя остановить jquery анимацию scrolltop?