jquery - 如何使用 jQuery.animate() 创建 "non-linear"轨迹?

标签 jquery animation

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

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

或者我应该使用 setInterval() 从头开始​​手动编码吗?

谢谢!
丹尼尔

最佳答案

您可以在 jQuery.easing 上创建自己的“缓动”函数,例如,此函数将近似超过 90 度的正弦曲线

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

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

我整理了a simple fiddle显示使用每个属性缓动和一些 sin/cos 函数来使用 jQuery 对 div 进行动画处理。

关于jquery - 如何使用 jQuery.animate() 创建 "non-linear"轨迹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4969645/

相关文章:

javascript - 如何切换阅读更多功能的可见性版本?

Jquery 在 div 元素内切换文本

javascript - 当内容进入 View 时播放动画

javascript - 如何使用 jQuery 禁用 Div 加载?

jquery - 从容器的右到左动态打开框

javascript - 为什么 event.bubbles 对于 "focusin"和 "focusout"是假的?

android - 如何在flutter中实现 float Snackbar动画?

c++ - 在不生成新 QMovie 的情况下更改 GIF 动画速度

animation - 如何知道 coreanimation 动画何时结束

javascript - APNG num_plays 在 Firefox 中有效,但在 Chrome 中无效