修复了jQuery缓动的加速度?

时间:2013-10-06 04:35:57

标签: jquery

我正在制作一个非常规的网站,水平滚动非常远的距离。我注意到jQuery的缓动函数在滚动距离的长度范围内延伸。它加速的持续时间似乎是它需要滚动的距离的固定部分。例如,它可以在距离的前1/5加速,以恒定速率滚动3/5,然后减速剩余的1/5。这使得在长距离滚动时加速更加缓慢。有什么方法可以让它在一定时间内加速,无论它需要滚动的距离是什么?

如果有帮助,这是我的代码的一部分

$('tbody.travelTo a').click(function(){
    $('html, body').animate({
        scrollLeft: $( $.attr(this, 'href') ).offset().left - 1/2 * $(window).width() + 1/2 * $( $.attr(this, 'href') ).width()
    }, $( $.attr(this, 'href') ).offset().left / travelRate, 'swing');
    return false;
}); 

1 个答案:

答案 0 :(得分:0)

您可以使用animate方法设置持续时间。 API

像这样的东西

.animate( 
   {scrollTop:'300px'},
   300, //duration is the 2nd parameter (default - 400ms)
   swing,
   function(){ 
     alert(animation complete! - your custom code here!); 
   } 
)

或者你总是可以编写自己的缓动方法

jQuery.easing.method(   
 null,  
 current_time,  
 start_value,   
 end_value,     
 total_time 
)

有用的链接 - http://forrst.com/posts/How_to_create_custom_jQuery_easing_functions-OKb