2010-07-19 97 views
2

我用下面的代碼根據鼠標的位置來滾動層:jQuery的滾動速度

$(".icons").animate({scrollTo:x},duration); 

但是它的工作原理髮現,我發現,要權當滾動速度更快。還注意到,如果滾動條從左邊開始滾動到右邊一點,然後再滾回來,他再次確實很慢。我假設真正的滾動速度不是最好的控制使用持續時間的參數,但我不知道如何控制速度。無論滾動條在哪裏,我都想要保持一致的速度。

任何指針?

感謝

+0

它實際上應該是'scrollTop',而不是'scrollTo'。錯字? – jAndy 2010-07-19 14:09:27

+0

對不起,斑點。我實際上使用scrollLeft ..水平滾動...我已經看過scrollTo插件和平滑滾動,但我想避免使用大量的插件... – 2010-07-19 14:19:07

回答

6

的問題是,這是一個持續時間,而不是你傳遞的速度,所以你需要立足於你需要移動,這樣的距離,持續時間:

$(".icons").each(function() { 
    var duration = Math.abs($(this).scrollLeft() - x) * 2; //2ms per pixel moved 
    $(this).animate({scrollLeft: x}, duration); 
}); 

你可以根據需要調整該常數,但這是基本前提,需要移動距離(絕對值),並將像素數乘以某個常數(如果需要),即每像素毫秒。

+0

感謝尼克,這是我以後。 ..仍然必須調整我的代碼升技,但你已經釘在頭上...乾杯! – 2010-07-19 14:37:41

+0

只是爲了更新你,我已經實現了上述,它工作的一種享受。非常感激! – 2010-07-19 15:55:40

+0

@Steven - 優秀:)總是很高興聽到一個問題的解決。 – 2010-07-19 16:07:24