准备好深入 Anime.js 的核心了吗?我们来一次性拆解 anime() 函数中所有可用的API参数。这篇就是你的字典,忘了哪个参数是干嘛的,随时回来查!
anime() 函数通过一个配置对象(Configuration Object)来工作,我们所有的“魔法”都写在这个对象里。
🎯 目标参数 (Target Parameters)
这是动画的起点,告诉Anime.js你要对谁施法。
targets- 作用: 指定一个或多个动画目标。
- 类型:
- CSS 选择器 (e.g.,
'.box') - DOM 节点 / NodeList
- JavaScript 对象或对象数组
- 纯文本字符串
- CSS 选择器 (e.g.,
- 笔记: 这是唯一一个必需的参数!没有目标,不成动画。
🎨 属性参数 (Property Parameters)
定义动画要改变的属性。可以是CSS属性、Transforms、SVG属性,或者JS对象属性。
-
常规属性 (e.g.,
opacity,backgroundColor,width)- 作用: 直接指定你想改变的属性名和它的最终值。
- 示例:
opacity: 0.5,width: '100%'
-
函数式属性
- 作用: 通过一个函数动态计算属性值,可以为每个目标元素生成不同的动画效果。
- 函数接收参数:
function(element, index, total)element: 当前目标元素。index: 当前元素在目标数组中的索引。total: 目标元素的总数。
- 示例:
translateX: (el, i) => i * 20(每个元素比前一个多移动20px)。
-
关键帧 (Keyframes)
- 作用: 让一个属性经历多个阶段的变化,而不是简单的“从A到B”。
- 语法: 将属性值定义为一个对象数组。JavaScript
translateX: [ { value: 250, duration: 800 }, { value: 0, duration: 1000, delay: 500 } ] - 关键帧内的专属参数:
value: 该帧的目标值。duration: 到达该帧所需的时间。delay: 到达该帧前的延迟。easing: 到达该帧使用的缓动函数。endDelay: 该帧结束后,进入下一帧前的延迟。
⚙️ 动画控制参数 (Animation Parameters)
这些参数是动画的“总开关”,控制着整个动画的播放行为和质感。
时间控制 (Timing)
-
duration- 作用: 动画总时长(毫秒)。
- 示例:
duration: 2000(动画持续2秒)。
-
delay- 作用: 动画开始前的延迟时间(毫orso)。
- 函数式:
delay: anime.stagger(100)(创建酷炫的交错延迟效果)。
-
endDelay- 作用: 动画结束后,在循环下一次或彻底完成前的延迟时间。
- 示例:
endDelay: 500。
-
easing- 作用: 缓动函数,决定动画的速度曲线。
- 类型: 字符串 (e.g.,
'easeInOutSine') 或自定义贝塞尔曲线cubicBezier(x1, y1, x2, y2)。 - 笔记: 这是赋予动画“生命感”的关键!
-
round- 作用: 对动画过程中变化的数值进行四舍五入。
- 类型:
boolean(true/false) 或数字(保留的小数位数)。 - 示例:
round: 1(保留一位小数)。
循环与方向 (Loop & Direction)
-
loop- 作用: 动画循环次数。
- 类型:
boolean(true表示无限循环) 或数字。 - 示例:
loop: 3。
-
direction- 作用: 动画播放方向。
'normal': 正常播放 (默认)。'reverse': 反向播放。'alternate': 交替播放 (循环时,一次正向,一次反向)。
- 笔记:
alternate和loop是天生一对!
- 作用: 动画播放方向。
-
autoplay- 作用: 是否自动播放。
- 类型:
boolean。设置为false后,你需要手动调用myAnimation.play()来启动动画。 - 示例:
autoplay: false。
🔄 回调函数 (Callbacks)
在动画生命周期的特定时刻执行你的代码,用于实现逻辑交互。
-
update(animation)- 触发时机: 动画的每一帧都会触发。超级频繁!
- 用途: 实时监控动画状态,如更新页面上的进度显示。
-
begin(animation)- 触发时机: 动画开始播放时(
delay结束后)触发一次。 - 用途: 做一些动画开始前的准备工作。
- 触发时机: 动画开始播放时(
-
complete(animation)- 触发时机: 动画全部播放完成后触发一次。
- 用途: 动画结束后的收尾工作,或触发下一个事件。
-
loopBegin(animation)- 触发时机: 每一次循环开始时触发 (第一次循环开始时也会触发)。
-
loopComplete(animation)- 触发时机: 每一次循环结束时触发。
-
change(animation)- 触发时机: (不常用) 当动画实例被
anime.remove()移除时触发。
- 触发时机: (不常用) 当动画实例被
回调函数接收的 animation 对象 是个宝藏,里面包含了动画当前的所有状态,比如:
animation.progress: 整体进度 (0-100)。animation.currentTime: 当前已播放时间。animation.remaining: 剩余循环次数。
以上就是 Animation 模块几乎所有的API和参数了。虽然看起来多,但它们的设计都非常直观。从 目标(targets) -> 属性(properties) -> 控制参数(parameters) 这个思路去构建,你会发现一切都井井有条。
建议收藏这篇,下次写动画时忘了哪个API,就当小字典来查吧!
#前端 #前端开发 #网页动画 #JavaScript #Animejs #Web开发 #API文档 #技术干货 #编程 #代码
1738

被折叠的 条评论
为什么被折叠?



