轻量级动画引擎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 接受赞助以保持可持续维护。

相关推荐
yangmu32035 小时前
编程语言发展简史:从机器指令到智能协作
开发语言
孟陬6 小时前
Foobar 技术周刊#160:大模型让大规模形式化软件验证成为现实丨AI写C++代码之后会发生什么?丨我们真的需要alpha() 函数吗丨重试,有时会让故障更
前端·后端·typescript
flash俊杰7 小时前
屏幕感知双通道:截图之外,为什么还要一份 UIA 控件清单
前端
熟的生菜7 小时前
从零造一个腱绳驱动灵巧手——仿真器篇3:VTK 渲染与 3D 交互——看得见、点得着、转得动
前端
Pniubi7 小时前
Java为什么要分堆和栈
java·开发语言
小小晓.8 小时前
Qt 对话框、QLineEdit 与布局管理实战详解
开发语言·qt
Henry-SAP8 小时前
SAP PP中的核心业务流程——离散制造、重复制造、流程制造三大模式解析
前端·数据库·人工智能·制造
徐小夕8 小时前
下载量超 30 万的开源智能体 Prime Agent:它把自己从 TypeScript 重写成了 Rust
前端·vue.js·github
Zhao-Jichao8 小时前
AI Prompting for Everyone 课程笔记 - P20 实验与期末项目 Lab and Final Project
前端·人工智能·笔记
炸薯条!9 小时前
博客系统测试报告
开发语言·lua