anime.js 是一个轻量级(16KB)高性能 JavaScript 动画库,专为现代 Web 开发设计。它支持 CSS、SVG、DOM 和 JavaScript 对象的动画控制,GitHub 星标数超 45k,被 Google、Spotify 等企业广泛采用。
核心优势:
功能类型 | 实现能力 | 性能等级 |
---|---|---|
基础变换 | 位移/旋转/缩放/透明度 | ★★★★★ |
颜色动画 | HEX/RGB/HSL 渐变 | ★★★★☆ |
SVG 动画 | 路径变形/描边动画 | ★★★★★ |
时间线控制 | 序列/并行/交错动画 | ★★★★☆ |
物理动画 | 弹簧/弹性/缓冲动画 | ★★★☆☆ |
animejs.com
• 文档中心:完整 API 参考手册
• 交互式示例:200+ 可编辑代码案例
• 视频教程:官方教学系列视频
• 在线调试:实时动画效果测试台
github.com/juliangarnier/anime
# 克隆最新开发版
git clone https://github.com/juliangarnier/anime.git
# 核心资源目录
├── /docs # 开发文档
├── /examples # 示例项目
├── /lib # 源码文件
└── /test # 单元测试
社区支持:
三种引入方式:
<script src="https://cdn.jsdelivr.net/npm/[email protected]/lib/anime.min.js">script>
npm install animejs
import anime from 'animejs/lib/anime.es.js';
// 元素淡入动画
anime({
targets: '.box',
opacity: [0, 1], // 透明度从0到1
translateY: ['50px', 0], // Y轴位移
duration: 1200, // 持续1.2秒
easing: 'easeOutExpo', // 指数缓动
loop: false // 不循环
});
时间线控制:
const timeline = anime.timeline({
direction: 'alternate'
});
timeline
.add({
targets: '.elem1', translateX: 250 })
.add({
targets: '.elem2', rotate: 360 }, '-=500') // 提前500ms执行
.add({
targets: '.elem3', scale: 1.5 }, '+=1000'); // 延迟1000ms
SVG 路径动画:
anime({
targets: 'svg path',
d: 'M10 80 Q 77.5 10, 145 80 T 280 80', // 路径变形
strokeDashoffset: [anime.setDashoffset, 0], // 描边动画
easing: 'easeInOutSine',
duration: 2000
});
动画类型 | 实现方式 | 官方示例链接 |
---|---|---|
弹性按钮 | spring() 缓动函数 |
弹性动画示例 |
SVG路径动画 | strokeDashoffset 属性 |
SVG动画示例 |
时间线控制 | anime.timeline() |
时间线示例 |
电商商品筛选动画:
anime({
targets: '.product-card',
opacity: {
value: [0, 1],
delay: anime.stagger(100) // 交错延迟
},
translateY: {
value: ['50px', 0],
easing: 'spring(1, 80, 10, 0)' // 弹簧效果
},
complete: () => {
initProductInteraction(); // 动画后初始化交互
}
});
数据可视化仪表盘:
const gauge = anime({
targets: '#needle',
rotate: () => anime.random(-90, 90),
duration: 2000,
update: () => {
updateDataDisplay(anim.progress); // 实时更新数据
}
});