如何使用jQuery.animate()创建“非线性”轨迹?

时间:2011-02-11 13:39:51

标签: jquery animation

我正在尝试将一个元素从位置A动画到位置B,但我不希望它在每个点之间线性地移动,我想要一种“抛物线”轨迹。

我可以使用jQuery.animate()吗?

或者我应该使用setInterval()?

从头开始手动编码

谢谢!
丹尼尔

2 个答案:

答案 0 :(得分:8)

您可以在jQuery.easing上创建自己的“缓动”功能,例如,此函数将近似于90度的sin曲线

jQuery.easing.sin90 = function(p, n, firstNum, diff) {
    return Math.sin(p * Math.PI / 2) * diff + firstNum;
};

p是0-1之间的数字,表示动画时间的百分比,n是此动画的实际经过时间,firstNumdiff是有点误导,似乎在某些时候这将采用开始/结束值,但现在所有缓动函数只是将p值标准化为firstNum = 0diff = 1

我把a simple fiddle放在一起显示使用每个属性的缓动和一些sin / cos函数来使用jQuery为圆圈中的div设置动画。

答案 1 :(得分:2)