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