2015-01-09 62 views
0

所以,我有这样的代码,使得div框的长度更短或更长,这取决于滚动位置。事情是,如果用户向下滚动然后迅速滚动,它会缩短,然后在使div再次变长之前挂起大约一秒。 这是为什么?当用户上下滚动太快时,jquery动画会挂起

$(window).bind('scroll', function() { 
    if ($(window).scrollTop() > 60) { 
     $("ul.undermenu").animate({width:'100px'}, 500);; 
    } 
    else { 
     $("ul.undermenu").animate({width:'1000px'}, 500); 
    } 
}); 

回答

2

您在滚动时以高速执行此事件。因此,你应该清楚的动画队列.stop(true, false)

var win = $(window), 
    menu = $("ul.undermenu"), 
    css = { width: 1000 };   

win.bind('scroll', function() { 
    css.width = win.scrollTop() > 60 ? 100 : 1000; 
    menu.stop(true, false).animate(css, 500); 
}); 

stop功能需要2个布尔值作为参数:

  • 清晰动画队列
  • 跳转到动画结束

让你决定哪个组合工作得很顺利。

DEMO

jQuery stop

+0

我猜着了!我尝试添加它,但它停止了所有工作。还是我加错了?你能告诉我如何正确使用它吗? – 2015-01-09 22:32:13

+0

显然'.stop(true,false)'似乎更好。看小提琴 – 2015-01-09 22:55:08

相关问题