☰
Anime.js V4 快速上手与工程化指南:从 ES Module 动画到本地开发测试
2026/9/30 6:51:57 网站建设 项目流程
  • 前端

【免费下载链接】anime

JavaScript animation engine

项目地址:https://gitcode.com/GitHub_Trending/an/anime
点击查看免费下载

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

项目地址:https://gitcode.com/GitHub_Trending/an/anime
点击查看免费下载
上一篇:3步完整方案:让老旧Mac电脑轻松升级最新macOS系统
下一篇:OpenHFT开源生态全景:第三方BOM管理与企业级集成方案

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询