轻量级动画引擎Anime.js迎来V4大版本更新

摘要

Anime.js 是一个轻量、快速、多面手的 JavaScript 动画引擎,一套简单的 API 就能同时驱动 CSS 属性、SVG、DOM 属性和普通 JS 对象的动画。V4 是一次彻底的架构升级:从单一的 anime() 函数,扩展成了一整套围绕时间线、拖拽、滚动触发、文字特效的模块化工具集,同时全面转向 ES Module 写法。

核心优势

API 从"一个函数"变成"一套工具箱" :V3 时代几乎所有动画都靠一个 anime({...}) 配置对象搞定;V4 把核心动画函数改名为 animate(),并围绕它拆分出 createTimeline(多动画精确编排)、createTimer、createDraggable(带物理惯性的拖拽交互)、createScope(配合媒体查询的动画作用域管理)、createLayout(DOM 重排布局动画)等一整套构建块,各自解决一类具体问题,而不是把所有能力都塞进一个函数里。

内置文字动画能力 :splitText 可以把文本拆成字符/单词/行,配合动画逐个入场;scrambleText 则实现打字机式的乱码到文字的揭示效果,不用再自己手写拆字逻辑。

滚动与交互开箱即用 :ScrollObserver 提供滚动触发动画的能力,createDraggable 自带摩擦力和阻尼可调的物理拖拽,做滚动视差或可拖拽交互不需要再额外引入第三方库。

多目标、多类型统一驱动 :同一套 animate() 语法既能改 CSS 属性和 transform,也能改 SVG 属性、DOM 属性或普通 JS 对象上的数值,配合关键帧、错开延迟(stagger)、贝塞尔曲线/弹簧等多种缓动,覆盖了绝大多数前端动画场景。

面向人群

  • 需要给页面元素、SVG 图标、滚动区块加动画效果的前端开发者
  • 已经在用 V3 版本、准备评估迁移到 V4 新架构的老用户
  • 想做交互式拖拽卡片、可视化图表过渡、文字揭示特效的产品页面开发者
  • 对动画库体积和性能敏感、不想引入重型动画框架的项目

快速上手

安装(ESM 包,animejs):

bash 复制代码
npm install animejs

基本用法------对匹配 .square 的元素做位移、旋转,并用 stagger 从中心向两侧错开动画延迟:

js 复制代码
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
});

如果之前用的是 V3 的 anime({...}) 写法,官方在 GitHub Wiki 提供了详细的 V3 到 V4 迁移指南,完整文档则统一放在 animejs.com/documentation。

进阶用法

用 createTimeline 编排多段动画 ,保证多个元素按精确的先后顺序或重叠时间执行,比 手动管理多个 animate() 调用的延迟时间更直观。

用 createDraggable 做物理拖拽交互:可以调节摩擦力和阻尼参数,做出带惯性的拖拽卡片、滑块等交互组件。

用 createScope 管理动画作用域:配合媒体查询,可以让同一段动画逻辑在不同屏幕尺寸下有不同表现,方便做响应式动画而不用手写一堆条件判断。

参与源码开发 :克隆仓库后执行 npm i 安装依赖,然后可以用以下脚本参与开发和测试:

bash 复制代码
npm run dev          # 监听 src/**/*.js 变化,打包 ESM 版本并生成类型声明
npm run dev:test     # 同时跑 dev 和浏览器测试
npm run build        # 打包 ESM / UMD / CJS / IIFE 多种格式并生成类型声明
npm run test:browser # 启动本地服务器运行浏览器相关测试
npm run test:node    # 运行 Node 相关测试
npm run open:examples # 启动本地服务器浏览官方示例

Anime.js 由 Julian Garnier 维护,采用 MIT 协议完全开源,项目通过 GitHub Sponsors 接受赞助以保持可持续维护。

相关推荐
Sarvartha7 小时前
final 关键字
java·开发语言
程序员Sunday8 小时前
JavaScript 事件循环面试题,宏任务与微任务怎么执行|Sunday面试指南
开发语言·javascript·面试·校招·事件循环·程序员sunday
Setsuna_F_Seiei8 小时前
前端转型 Agent 开发 06 之 Agent Memory 记忆系统(让 Agent 更智能,更懂你)
前端·agent·ai编程
zhangzeyuaaa9 小时前
Ruby 多线程、GVL(GIL)与 Mutex 完全指南
开发语言·前端·ruby
默_笙9 小时前
🌊 向量库和 ES 都查不出"关系",我只好给奶茶建了一张人脉网
前端·javascript
优选资讯10 小时前
标签打印软件怎么对接 Excel 数据
前端·excel
谢亮_vipxieliang10 小时前
用 PHP 构建轻量级 REST API:从路由到鉴权的完整实践
开发语言·后端·php
思无邪6610 小时前
用 AI 做 JS 逆向:从抓包到复现的完整方法论
开发语言·javascript·人工智能
一个风轻云淡10 小时前
GCC 和 GDB命令简单解读
java·linux·前端
传奇开心果编程11 小时前
【React Native娓娓道来】第9课 动画与手势:Animated、Reanimated 与 Pressable 进阶
移动开发·动画·手势·编程语言理论·开发范式·编程框架·声明式ui