⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

动画逐帧控制:easing与step回调实现复杂运动

超越fadeIn/slideDown,学习使用easing函数和animate的step回调创建自定义物理运动(如弹跳、弹簧效果),并实时反馈数值变化。 · 难度:入门 · +10XP

动画逐帧控制:easing与step回调实现复杂运动

jQuery的animate支持easing(内置linear和swing)以及第三方插件。更强大的功能是step回调,它在动画每一帧都会被调用,并传递当前动画属性的实时值。利用step可以驱动多个相关属性同步变化,比如让一个div的背景色随位置变化而渐变。本教程将教你无插件实现自定义easing函数(如缓入缓出),以及如何用step构建类似重力感应的动画:当元素到达边界时速度反向,模拟碰撞反弹效果。还会讲解如何通过promise确保step内的异步操作完成。

$('.ball').animate({ left: '500px' }, {
  duration: 2000,
  easing: function(x, t, b, c, d) {
    // 自定义弹跳easing
    return b + c * Math.pow(2, -10 * t/d) * Math.sin((t/d - 0.075) * 2 * Math.PI / 0.3);
  },
  step: function(now, fx) {
    // 实时更新阴影或旋转
    $(fx.elem).css('transform', 'rotate(' + now/5 + 'deg)');
  }
});
Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 55 篇
0 完成
🔥 0