2013-09-23 43 views
1

我有一個jQuery腳本,允許我水平滾動,但它是一個生鏽的舊滾動,我想使它平滑而不更改整個代碼。Smooth scrool只有jQuery

我想用.animate更改this.scrollLeft -= (delta * 90);,但我是jQuery的初學者。

這裏是我到目前爲止的代碼:

$(document).ready(function() { 

    $('html, body, eall, *').mousewheel(function(e, delta) { 
     this.scrollLeft -= (delta * 90); 
     e.preventDefault(); 
    }); 
}); 
+2

什麼是'eall''應該選擇? – Bigood

+1

然後仍然爲什麼使用'*'它將無論如何匹配所有元素? –

回答

1

首先只選擇必須致電事件回調,而不是$('html, body, eall, *')像你提問中的表明你在做什麼。

例如,.horizontalScroll類添加到所需的元素,然後$('.horizontalScroll

然後,你可以做這樣的事情做一個平滑滾動:

var scroll = $(this).scrollLeft() - (delta * 90); 
$(this).stop(true).animate({ 
     scrollLeft: scroll 
}, 200); 
e.preventDefault(); 

See this working demo(內div#scroll滾動,調整(delta * 90)animate持續時間參數200以獲得所需的平滑度。

+0

感謝它的工作,但我需要改變你的代碼 $(this).stop(true)而不是$(this).stop(true,true)Ty –

+0

@AlexBonta你做得很好。跳躍結束導致醜陋的行爲。我更新了答案和DEMO – letiagoalves

2

你可以做這樣的事情:

$('html, body').animate({ 
    scrollLeft : 0 // or whatever value you need here 
}, 750);