8

我正在使用 Robert ( http://gsgd.co.uk/sandbox/jquery/easing/ ) 的 jQuery 缓动插件,我需要强调或拖出缓动效果。

基本上,我希望缓动效果非常快,但在缓出过程中会大大减慢。

我相信我可以做到这一点,jQuery.easing.easeOutCubic( null, current_time, start_value, end_value, total_time)但我不知道如何正确使用它。

如何做到这一点?

4

1 回答 1

19

您不需要缓动插件来使用 jQuery 进行自定义缓动。您只需要您要使用的一个缓动函数的源 JavaScript 代码。

这是easeOutCubic从 jQuery UI 源代码中获得的函数。有关更多信息,请参阅此线程

$.easing.easeOutCubic = function (x, t, b, c, d) {
    return c*((t=t/d-1)*t*t + 1) + b;
}

现在您可以编辑函数和/或重命名它...

$.easing.myEasing = function (x, t, b, c, d) {
    return c*((t=t/d-1)*t*t + 1) + b;
}

(以下所有示例都使用 375 像素的蓝色方块,slideToggle()持续时间为 3 秒。您可以更改 3 秒(3000 毫秒)的持续时间以根据自己的喜好演示效果。我选择了 3 秒以使其足够慢以查看差异。)

然后你把它放在你的jQuery中,也许是这样的......

$(document).ready(function(){

        $.easing.myEasing = function (x, t, b, c, d) {
            return c*((t=t/d-1)*t*t + 1) + b;
        }

        $("#button").click(function() {
            $('#myDiv').slideToggle(
                3000, // <-- Animation Duration (3000 ms)
                'myEasing'  // <-- the Name of your easing function
            );
        });

});

这是上述代码的演示,其中包含easeOutCubic重命名为myEasing并应用于slideToggle()持续时间为 3 秒的多维数据集的函数。

http://jsfiddle.net/kJZxQ/

好的,现在到你的问题:你说你想要“......缓动效果非常快,但在缓出过程中会大大减慢。”

这是一个图表easeOutCubic轻松户外

您有两个选择,您可以操纵缓动方程本身,或者我们可以查看其他缓动函数是否具有类似的曲线,但在缓动部分之前更陡(更快)。

这个演示页面直观地向您展示了所有的缓动曲线......

http://api.jqueryui.com/easings/

如您所见,几条曲线的形状与 (7) 类似,easeOutCubic但前端更陡峭。这里有几个例子......


(10)- easeOutQuart 轻松出局 easeOutQuart 演示


(13)- easeOutQuint 轻松退出 easeOutQuint 演示


(16)- easeOutExpo 轻松出展 easeOutExpo 演示


似乎最后一个easeOutExpo是可用的最陡峭的股票函数。通过比较上面包含的方程的差异,我们还可以操纵easeOutExpo方程使曲线更加陡峭。

这个自定义方程快得离谱,然后速度大大减慢......

http://jsfiddle.net/kJZxQ/11/

比上次还极端……

http://jsfiddle.net/kJZxQ/12/

上次演示的持续时间增加到 6 秒以夸大效果......

http://jsfiddle.net/kJZxQ/13/

通过比较上述演示的数学方程,您可以看到正在操纵哪个变量来增强效果并相应地进行自己的微调。

我真的觉得easeOutExpo更像你描述的那样。本质上,这是你的easeOutCubic方程式,但只是前面更快,最后更慢。

于 2011-10-13T17:45:10.523 回答