2015-08-03 74 views
0

锚我有一个非常基本的HTML网站有几个锚标签。在点击每个锚导致其他使用平滑滚动的一点点带有此功能:jQuery的滚动与变速

$(document).ready(function(){ 
    $('a[href^="#"]').on('click',function (e) { 
     e.preventDefault(); var target = this.hash; var $target = $(target); 
     $('html, body').stop().animate(
      { 
       'scrollTop': $target.offset().top - 300 
      }, 
      900, 
      'swing', 
      function() { 
       window.location.hash = target - 300 ; 
      } 
     ); 
    }); 
}); 

锚之间的差距将是相当大的,我试图找出一种方式来获得的速度不同 - 在一个锚点击后,启动速度较慢,比加快,在接近下一个锚在停止之前再次放慢。

找不到任何JQuery文档,有人有建议吗?

FIDDLE:https://jsfiddle.net/koteva/ovf9ywb3/

回答

0

我相信你会希望使用缓动函数来处理这个问题。默认情况下,jQuery的只能处理swing宽松,你已经通过到您的animate功能。但是,您可以包括与插件额外的宽松政策功能。

乔治史密斯有一个轻量级的js插件下载,可以帮助你,叫jquery.easing.1.3.js。我认为easeInOutQuart听起来就像是最接近你正在寻找

这里什么是demo fiddle

0

通过包括jQuery UI(jQuery的)之后,你就可以使用渐变效果所列here

你的代码看起来像:

$('html, body').stop().animate(
    { 
     'scrollTop': $target.offset().top - 300 
    }, 
    900, 
    'easeInOutCubic', 
    function() { 
     window.location.hash = target - 300 ; 
    } 
);