2015-02-26 2 views
1

Я хочу остановить анимацию, показывающую «черный заголовок».Как остановить анимацию в jQuery

Если прокрутить пару раз быстро вы заметите, что анимация запускается и черный заголовок будет «вспышка»

$(window).scroll(function() { 
    if ($(window).scrollTop() > 200) { 
     $(".prim").fadeIn(250); 
    } 
    else { 
     $(".prim").fadeOut(250); 
    } 
}); 

//Sticky bar responsive fix 
$(window).resize(function(){ 
    var width = $(window).width(); 

    if(width > 1024 && $(window).scrollTop() > 190){ 
     $(".prim").fadeIn(250); 
    } 
    else{ 
     $(".prim").css('display', 'none'); 
    } 

}); 

http://jsfiddle.net/zlajaa1/fbe4p283/1/

+0

Вот еще одна статья объясняет, как остановить JQuery анимации: http://stackoverflow.com/questions/3701311/jquery-event-when-user-stops-scrolling. Напишите код, окружающий одну из этих идей, чтобы создать нужную функциональность. – puddinman13

ответ

2

Вы можете использовать метод stop(). Метод принимает 2 параметра.

Из документов Jquery:

clearQueue Тип: Boolean Логическое значение, указывающее, следует ли удалить анимацию в очереди, а также. По умолчанию false.

jumpToEnd Тип: Boolean Логическое значение, указывающее, следует ли немедленно завершить текущую анимацию. По умолчанию false.

jsfiddle demo

$(window).scroll(function() { 
    if ($(window).scrollTop() > 200) { 
     $(".prim").fadeIn(250); 
    } 
    else { 
     $(".prim").stop(true, true).fadeOut(250); 
    } 
}); 

//Sticky bar responsive fix 
$(window).resize(function(){ 
    var width = $(window).width(); 

    if(width > 1024 && $(window).scrollTop() > 190){ 
     $(".prim").fadeIn(250); 
    } 
    else{ 
     $(".prim").css('display', 'none'); 
    } 

}); 
+0

Это хороший план, но он больше не исчезает. – puddinman13

+0

отредактировал мой ответ. Нехорошо было прекратить FadeIn. –

+0

Вот еще одна идея, использующая логическое значение, но теперь мне нравится ваш теперь @kasperTaeymans. http://jsfiddle.net/puddinman13/Lgqvfsub/ – puddinman13

Смежные вопросы