如何为动画/滚动顶部添加'缓动'

时间:2013-05-21 21:47:01

标签: jquery

我正在使用以下函数创建一个滚动动画来锚定链接:

$('a').click(function(){
    $('html, body').animate(
        {scrollTop: $( $.attr(this, 'href') ).offset().top}, 
        500 );
    return false;
});

我想添加缓动。但是,当我在'500'之后添加'easing'时会破坏脚本:

$('a').click(function(){
    $('html, body').animate(
        {scrollTop: $( $.attr(this, 'href') ).offset().top}, 
        500, easing );
    return false;
});

任何想法我做错了什么?

1 个答案:

答案 0 :(得分:34)

首先,您需要包含jQuery.UI脚本,然后您的代码应该看起来:

$('a').click(function(){
    var top = $('body').find($(this).attr('href')).offset().top;
    $('html, body').animate({
        scrollTop: top
    },500, 'easeOutExpo');

    return false;
});

供您参考:

<强>缓解

  

.animate()的剩余参数是一个命名缓动的字符串   功能使用。缓动函数指定的速度   动画在动画中的不同点上进行。该   只有jQuery库中的缓存实现是默认的,   叫做摇摆,一个以恒定的速度前进,称之为   线性的。使用插件可以获得更多的缓动功能,   最值得注意的是jQuery UI套件。


为什么您的代码不起作用:

  1. 因为您使用的是动态方法范围内的this 引用bodyhtml个对象。
  2. 因为easing不是方法。是您需要的字符串类型的动画属性 将其写为字符串,例如:'easeOutExpo'"easeOutExpo"