Вопрос по jquery, html – jQuery мерцание при использовании animate-scrollTo

27

У меня проблема сscrollTo функция, когда она вызывается JQueryanimate функция.

Вот мой код:

$("#button").click(function(){
    $("body").animate({scrollTop: 1400},"slow");
});

Когда я нажимаю кнопку, мерцание появляется перед прокруткой тела. Например, я активен (позиция прокрутки) 1000, и когда я нажал кнопку, произошло следующее:

page/image on (scroll position) 1400 appears, it looks like I have already gone to (position) 1400 then it moves again to (position) 1000, this happens so fast and looks like a flicker finally it scrolls to 1400 like a normal scroll..

На Firefox он всегда появляется, а иногда и на Chrome.

Пожалуйста, предоставьте ссылку на плагин scrollTo для тех, кто в нем нуждается. Mark Schultheiss
это образец.demos.flesler.com/jquery/scrollTo  и вот где я получил плагин.flesler.blogspot.com/2007/10/jqueryscrollto.html gondai yosuke
решено (наверное). Я использую плагин scrollTo для определения хэш-тега, и когда кнопка была нажата, я устанавливаю ее значение true, чтобы хеш-код появлялся в ссылке и заставлял браузер переходить к выбранному идентификатору перед анимацией. я снова установил это как ложное, и теперь это оживляет нормально. gondai yosuke

Ваш Ответ

3   ответа
77

У меня была такая же проблема мерцания. Это было вызвано хэш-привязкой в ссылке, которая вызывает функцию. Исправлена ошибка с помощью protectDefault ():

$("#button").click(function(e){
    e.preventDefault();
    $("body").animate({scrollTop: 1400},"slow");
});
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
7
<a href="#" onclick="return scrollFromTop(1400, 2000);">scroll</a>

function scrollFromTop(offset, duration) {
    $('body').stop(true).animate({scrollTop: offset}, duration);
    return false;
});

была та же самая проблема ... исправил это, возвращая false на обработчике щелчка

Error: User Rate Limit Exceeded
1

решил эту проблему, остановив анимацию следующим образом:

$('body,html').bind('scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove', function(e){
            if ( e.which > 0 || e.type == "mousedown" || e.type == "mousewheel" || e.type == "touchmove"){
                $("html,body").stop();
            }
        })

нашел там:Jquery .animate () остановить прокрутку, когда пользователь выполняет прокрутку вручную?

Похожие вопросы