juliangarnier/anime

多媒体与设计

一个轻量 JavaScript 动画库,用来给 CSS、SVG、DOM 属性和普通对象加脚本控制的动效。

73,942
5,004
JavaScript
MIT
创建于 10 年前

如果你需要在浏览器里用代码控制动效,并且希望一套 API 同时覆盖 DOM、CSS、SVG 和普通 JavaScript 对象,Anime.js 值得看一眼。它是通用动画引擎,不是时间轴编辑器,也不是设计工具,意味着你得写代码而不是拖关键帧。

解决什么问题

一个开发者想让按钮滑入、Logo 自己画出来、列表项从中心向两侧依次出现,而且这些动效要跟着用户操作变化。手写 CSS transition 在时序要运行时计算、数值动态变化、或者目标不是带样式的元素而是 SVG 路径时,就会变得很难维护。发生变化的是编排方式:不再堆一堆 keyframe 规则,而是在 JavaScript 里描述动画。得到的结果是一段可以被暂停、循环、反向或从应用逻辑里重新启动的动画。

有什么不同

Anime.js 用一套 API 面向四类目标:CSS 属性、SVG、DOM 属性和普通 JavaScript 对象。最后一项比听起来更有用,因为它让同一套时序模型也能驱动非 DOM 状态,比如 Three.js 对象或 canvas 的渲染循环,不必再引入另一套动画系统。README 的示例体现了它的典型写法:选择器作为目标、带 from 值的属性映射、duration,以及用 stagger 加 from: 'center' 让多个元素的延迟从中心向两侧展开 项目说明。

V4 是 ESM 优先的包:你导入 animate 和 stagger,而不是依赖全局变量。这对现代打包工具友好,但对从 V3 升级的人来说是明显变化,因此项目单独提供了迁移指南 迁移指南。代价也很直接:你在写代码,复杂的过场式编排要自己组织;库里提供的是运动原语和时序辅助,不是可视化编辑界面。

谁值得试

适合:需要给落地页、数据可视化或 SVG 插画加交互式、状态驱动动效的前端开发者,并且希望避免维护许多零散的 CSS 动画。这个 API 面积不大,花一个下午把它接入一个组件是现实的做法。

不适合:期待时间轴界面、或者需要带可视化预览的完整动效设计系统的设计团队。这是个库,主要文档在网站 文档,工作方式是改代码再刷新,而不是鼠标合成。如果动效只是静态元素上的简单悬停效果,原生 CSS 可能已经够用。

使用条件与边界

V4 以 ES 模块形式分发,README 的用法假定你有构建环境或 import map 式的加载方式。仓库提供了开发、构建和测试脚本,产物覆盖 ESM、UMD、CJS 和 IIFE 项目说明,因此旧的 script 标签方式仍可消费构建产物,但文档给出的入口是模块导入。要在本地开发这个仓库需要 Node 和 npm;使用已发布的包则不需要克隆仓库。

日常维护主要是升级维护:V3 到 V4 改了导入方式和 API 形态,迁移现有代码前应查看迁移指南 迁移指南。许可证是 MIT 许可证,比较宽松,但这里不对仓库之外的长期维护做判断。README 摘录以赞助商信息为主,没有列出浏览器兼容表或性能基准,如果这些会影响你的目标环境,需要到完整文档里确认。

HotRepo 点评

HotRepo 的记录里只有 2026-10-27 这一天冲上日榜的观察:当天 73,924 星,单日 +72。仅凭这一个带日期的快照,无法判断关注度是在上升、下降还是稳定,现有历史也不足以判断持续性。采用问题其实更简单:如果你想要一套 JavaScript 动画 API 同时处理 DOM、CSS、SVG 和对象状态,先读 V4 的导入方式和 V3 迁移指南再决定。

Hacker News 讨论

JavaScript Animation Engine
▲ 1 · 0 条评论 · 2018年6月19日
Lightweight JavaScript Animation Engine
▲ 1 · 0 条评论 · 2016年6月29日

本文由 AI 根据项目 README 生成,更新于 2026年10月27日,以项目官方文档为准。