- 前端
【免费下载链接】anime
JavaScript animation engine
Anime.js(Anime.js V4)是一款快速、多用途且轻量的 JavaScript 动画库,主打简单而强大的 API,支持 CSS 属性、SVG、DOM 属性与 JavaScript 对象等多元目标的动画。本文基于本仓库 README.md 及其源码,完整讲解 Anime.js V4 的引入方式、核心animate/stagger用法、V4 模块化架构与 NPM 开发脚本,并带你搭建本地示例浏览与测试环境,读完即可独立写出可上线的动效。
Anime.js 是什么
按 README.md 的定义,Anime.js 是一个fast, multipurpose and lightweight(快速、多用途、轻量)的 JavaScript 动画库,API 简单但表现力强大,能够同时操作:
- CSS 属性(transform、opacity、filter 等)
- SVG(路径描边、坐标、变形等)
- DOM 属性
- JavaScript Objects(普通对象属性,常用于游戏与数据驱动动效)
本仓库即 Anime.js V4 的完整实现。源码入口 src/index.js 从timer、animation、timeline、animatable、draggable、scope、events、engine、easings、layout、svg、text、waapi、adapters等模块统一导出全部 API,并额外导出easings、utils、svg、text命名空间与全局配置对象globals,这也是 V4 模块化架构的直观体现。
Anime.js V4 官方 Logo 动画,展示了该库对 SVG 与文本动画能力的综合运用。
安装与引入:V4 以 ES Module 为核心
Anime.js V4 使用ES Modules组织代码,这是 README 明确强调的用法。安装依赖后(见下文“NPM 开发脚本”一节),按需导入即可:
import { animate, stagger, } from 'animejs';从 package.json 可以看出,包本身是"type": "module",且通过exports字段提供了细粒度的子路径导出,例如:
animejs(根入口,对应dist/modules/index.js)animejs/timer、animejs/animation、animejs/timeline、animejs/animatable、animejs/draggable、animejs/scope、animejs/engine、animejs/events、animejs/layout、animejs/easings、animejs/utils、animejs/svg、animejs/text、animejs/waapi、animejs/adapters、animejs/adapters/three
其中animejs/adapters/three用于 Three.js 集成(peerDependencies中声明了three >= 0.150.0,且标记为可选),构建产物同时提供 ESM / UMD / CJS / IIFE 多种格式(见 rollup.config.js 与 package.json 中jsdelivr/unpkg指向的dist/bundles/anime.umd.min.js),因此在浏览器端也可以通过 CDN 以 UMD 方式直接使用。
第一个动画:一行代码读懂 V4 核心参数
README 给出的核心示例是最具代表性的 V4 入门代码:
import { animate, stagger, } from 'animejs'; animate('.square', { x: 320, rotate: { from: -180 }, duration: 1250, delay: stagger(65, { from: 'center' }), ease: 'inOutQuint', loop: true, alternate: true });上述代码的实际运行效果:多个方块自中心依次向 x 方向平移 320px,并伴随从 -180° 开始的旋转动画。
逐项拆解这段代码,即可覆盖 V4 绝大多数高频参数:
| 参数 | 取值 | 含义 |
|---|---|---|
x: 320 | 数字 | 目标属性位移量,作用于 CSS transform 的 translateX;x/y/z是 V4 提供的 transform 快捷写法(见 src/core/consts.js 中的shortTransforms映射) |
rotate: { from: -180 } | 对象语法 | 通过{ from, to }显式声明起始值;V4 支持从值(from)、目标值(to)、相对值(+=、-=、*=运算符)多种写法 |
duration: 1250 | 毫秒 | 动画时长,默认值可在全局defaults中调整(src/timer/timer.js 通过setValue(parameters.duration, globals.defaults.duration)解析) |
delay: stagger(65, ...) | stagger 函数 | 为多个目标生成递增延迟,实现依次错开的波浪效果 |
ease: 'inOutQuint' | 字符串 | 缓动函数名,V4 内置大量缓动并支持cubic-bezier、steps、spring等扩展(见 src/easings/index.js) |
loop: true | 布尔 | 无限循环播放 |
alternate: true | 布尔 | 往返交替播放(正播后倒播),常与loop配合 |
其中animate是 V4 最核心的工厂函数。源码 src/animation/animation.js 中的animate实现为:若无globals.editor介入,直接new JSAnimation(targets, parameters, null, 0, false).init();JSAnimation继承自Timer,负责把参数对象逐属性解析为内部“tween”,再交给引擎逐帧渲染。因此从源码结构看,一次animate调用背后是目标注册(registerTargets)→ 参数归一化(generateKeyframes)→ tween 创建 → 时钟驱动的逐帧渲染的完整链路。
stagger:V4 的波浪与网格错帧神器
stagger是 README 示例中唯一出现的工具函数,专用于为多个目标生成递增的延迟或属性值。其核心实现在 src/utils/stagger.js,用法为stagger(value, params),其中value可以是单个数值、字符串,或[起始值, 结束值]区间(区间模式下按距离插值)。
常用参数如下:
| 参数 | 说明 |
|---|---|
from | 错帧起点:'first'(默认)、'center'、'last'、'random'、数值索引,或[x, y]坐标 |
grid | 网格布局:传入[列数, 行数]按网格计算距离,或grid: true自动根据目标实际坐标(getBoundingClientRect或对象x/y/z属性)计算,见 examples/stagger/index.js |
axis | 'x'/'y'/'z',仅沿指定轴向计算距离 |
ease | 对错帧间隔施加缓动,可传内置缓动名或 spring 对象 |
reversed | 反转错帧顺序 |
jitter | 抖动:数值或[最小值, 最大值]区间,为每个目标叠加随机扰动 |
seed | 随机种子,传入后抖动/随机from变为可复现 |
start | 错帧的起始时间偏移 |
total | 自定义目标总数(默认取目标数组长度) |
use | 基于目标某一属性的实际值作为错帧索引依据 |
modifier | 对最终输出的错帧值做二次修饰 |
README 示例中stagger(65, { from: 'center' })的含义是:以目标群中心为起点,每个相邻目标依次延迟 65ms,从而形成中心向外扩散的涟漪式入场。从 src/utils/stagger.js 可以看到,from: 'center'在索引模式下等价于(total - 1) / 2,随后按各目标与中心的绝对索引差生成延迟序列;若启用grid: true,则直接读取每个目标 DOM 元素的中心坐标并计算欧氏距离,距离会被归一化(除以最小非零距离),确保网格错帧的视觉节奏均匀。
与 WAAPI 的对比:stagger 的价值
仓库 examples/auto-layout/code/index.html 给出了一个直观对比:使用原生 Web Animations API 需要手动遍历元素、逐个计算delay: i * 100;而 Anime.js 用stagger(100)一行完成同样的错帧逻辑,代码量显著减少、可读性更高。
V4 模块化架构:从 animate 到全家族 API
除animate与stagger外,V4 通过 src/index.js 对外暴露了完整 API 家族,对应仓库中的独立模块:
createTimeline(src/timeline/timeline.js):多动画编排,支持add(targets, params, position)链式排布、labels标签定位、子动画的composition(组合方式)控制,并支持把stagger()函数直接作为第三个参数实现时间轴内的错帧编排(见 examples/stagger/index.js 中createTimeline({ composition: false }).add(dots, {...}, stagger([0, 2000], { grid: true, from: 'center', axis: 'x' })))createTimer/Timer(src/timer/timer.js):低层计时器基类,Animation与Timeline均继承自它createAnimatable(src/animatable/animatable.js):可手动推进时间的持续动画,常用于游戏循环createDraggable(src/draggable/draggable.js):拖拽交互与惯性滚动createScope(src/scope/scope.js):限定动画目标作用域createScrollObserver(src/events/scroll.js):滚动监听联动createEngine(src/engine/engine.js):动画引擎createLayout(src/layout/layout.js):布局动画(FLIP 类)splitText(src/text/split.js):文本拆分(字符/词/行)实现逐字动画- SVG 工具(src/svg/index.js):
createDrawable、createMotionPath、createMorphTo等 - WAAPI 适配层(src/waapi/index.js):基于 Web Animations API 的同构实现,API 与 V4 主库保持一致
- Three.js 适配器(src/adapters/three/):把 Anime.js 的动画能力扩展到 WebGL 场景中的 Three.js 对象(
object3d、uniform等)
仓库 examples/ 目录提供了覆盖上述全部能力的可运行示例,例如 examples/animejs-v4-logo-animation/、examples/text/split-effects/、examples/canvas-2d/、examples/threejs/transforms/,可作为学习与复用的最佳素材。
本地开发:NPM 脚本与测试全解析
README 提供了完整的开发脚本表格。首次使用请先执行npm i安装全部依赖(见 package.json 的devDependencies),随后用npm run <script>运行:
| script | 作用 |
|---|---|
dev | 监听src/**/*.js变化,自动将 ESM 版本打包到lib/,并生成types/下的类型声明 |
dev:test | 同时运行dev与test:browser,开发调试一体化 |
build | 打包 ESM / UMD / CJS / IIFE 全部版本到lib/,并生成类型声明 |
test:browser | 启动本地服务器并运行全部浏览器相关测试 |
test:node | 运行 Node 相关测试 |
open:examples | 启动本地服务器,在浏览器中浏览示例 |
各脚本的具体命令可在 package.json 的scripts字段中查看,例如:
test:browser使用browser-sync以tests/index.html为起点启动本地服务器,并监听dist/modules/**/*.js与tests/suites/**/*.js的变更(对应 tests/index.html 与 tests/suites/ 下的 30 余个测试套件,如animations.test.js、timelines.test.js、stagger.test.js、svg.test.js、threejs.test.js等);test:node通过 Mocha 以 TDD 模式运行 tests/suites/node.test.js,超时 20 秒;open:examples同样借助browser-sync以 examples 目录为根启动静态服务并热刷新。
因此,推荐的本地工作流是:
npm i # 安装依赖 npm run open:examples # 浏览示例,快速上手 npm run dev:test # 边改边跑浏览器测试 npm run build # 产出全格式构建产物此外 package.json 还提供了typecheck、typecheck:examples、typecheck:tests等 TypeScript 类型检查脚本,配合仓库根目录的 tsconfig.json、examples/tsconfig.json 与 tests/tsconfig.json 使用,可在编译前捕获类型错误。
小结
Anime.js V4 以 ES Module 为核心、以animate/stagger为高频入口,覆盖 CSS、SVG、DOM、JS 对象乃至 Three.js 场景;配合createTimeline、splitText、createDraggable、createScrollObserver等模块化 API,足以应对从页面动效到数据可视化、再到 WebGL 场景动画的绝大多数需求。本文涉及的代码示例均可直接运行,建议结合 examples/ 目录与 tests/suites/ 测试套件进一步深入,Anime.js V4 遵循 MIT License 开源协议,可放心用于个人与商业项目。
- 前端
【免费下载链接】anime
JavaScript animation engine
相关推荐
Anime.js动画库快速上手:打造惊艳Web动画的终极指南
Anime.js动画库快速上手:打造惊艳Web动画的终极指南 Anime.js是一款轻量级但功能强大的JavaScript动画引擎,让开发者能够轻松创建流畅、复
前端Anime.js入门指南:轻量级JavaScript动画引擎快速上手
Anime.js入门指南:轻量级JavaScript动画引擎快速上手 还在为网页动画效果而烦恼吗?想要创建流畅、专业的动画却不知从何下手?Anime.js正是你
前端VitePress 快速上手指南:从安装、脚手架初始化到本地开发全流程
VitePress 快速上手指南:从安装、脚手架初始化到本地开发全流程 本文是一篇面向初学者的 VitePress 实战入门指南,基于 VitePress 官方
前端文档
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考