2015-01-09 103 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

相關問題