0

我正在制作一个非常规的网站,可以水平滚动很远的距离。我注意到 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;
}); 
4

1 回答 1

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

于 2013-10-06T04:41:02.373 回答