Как отключить прокрутку до завершения анимации?

Я использую этот код для прокрутки до определенного элемента на моей странице:

$("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?