我正在使用 Robert ( http://gsgd.co.uk/sandbox/jquery/easing/ ) 的 jQuery 缓动插件,我需要强调或拖出缓动效果。
基本上,我希望缓动效果非常快,但在缓出过程中会大大减慢。
我相信我可以做到这一点,jQuery.easing.easeOutCubic( null, current_time, start_value, end_value, total_time)
但我不知道如何正确使用它。
如何做到这一点?
我正在使用 Robert ( http://gsgd.co.uk/sandbox/jquery/easing/ ) 的 jQuery 缓动插件,我需要强调或拖出缓动效果。
基本上,我希望缓动效果非常快,但在缓出过程中会大大减慢。
我相信我可以做到这一点,jQuery.easing.easeOutCubic( null, current_time, start_value, end_value, total_time)
但我不知道如何正确使用它。
如何做到这一点?
您不需要缓动插件来使用 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 秒的多维数据集的函数。
好的,现在到你的问题:你说你想要“......缓动效果非常快,但在缓出过程中会大大减慢。”
这是一个图表easeOutCubic
:
您有两个选择,您可以操纵缓动方程本身,或者我们可以查看其他缓动函数是否具有类似的曲线,但在缓动部分之前更陡(更快)。
这个演示页面直观地向您展示了所有的缓动曲线......
http://api.jqueryui.com/easings/
如您所见,几条曲线的形状与 (7) 类似,easeOutCubic
但前端更陡峭。这里有几个例子......
(10)- easeOutQuart
easeOutQuart 演示
(13)- easeOutQuint
easeOutQuint 演示
(16)- easeOutExpo
easeOutExpo 演示
似乎最后一个easeOutExpo
是可用的最陡峭的股票函数。通过比较上面包含的方程的差异,我们还可以操纵easeOutExpo
方程使曲线更加陡峭。
这个自定义方程快得离谱,然后速度大大减慢......
比上次还极端……
上次演示的持续时间增加到 6 秒以夸大效果......
通过比较上述演示的数学方程,您可以看到正在操纵哪个变量来增强效果并相应地进行自己的微调。
我真的觉得easeOutExpo
更像你描述的那样。本质上,这是你的easeOutCubic
方程式,但只是前面更快,最后更慢。