当前位置: 首页 > news >正文

Anime.js - 轻量级JavaScript动画库

项目描述

Anime.js 是一个轻量级但功能强大的 JavaScript 动画库,具有以下特点:

  • 支持 CSS 属性、SVG、DOM 属性和 JavaScript 对象的动画
  • 简单易用的 API 设计
  • 高性能动画渲染
  • 丰富的缓动函数和动画控制选项
  • 支持时间轴和复杂动画序列

项目采用 MIT 许可证,当前版本为 v4.0.2。

功能特性

  • 多目标支持:可以同时动画化多个目标元素
  • 丰富的时间控制:支持延迟、持续时间、循环等参数
  • 高级缓动函数:内置多种缓动效果,支持自定义贝塞尔曲线
  • 动画组合:支持替换、混合等动画组合方式
  • 响应式设计:适配不同设备和屏幕尺寸
  • SVG 支持:完整支持 SVG 元素的动画
  • 时间轴功能:可以创建复杂的动画序列
  • 滚动触发:支持基于滚动位置的动画
  • 物理动画:提供弹簧动画效果

安装指南

NPM 安装

npm install animejs

CDN 引入

<script src="https://cdn.jsdelivr.net/npm/animejs@4.0.2/lib/anime.min.js"></script>

ES Module 导入

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
});

时间轴示例

const timeline = createTimeline();timeline.add({targets: '.element',translateX: 250,duration: 1000
}).add({targets: '.another-element',translateY: 100,duration: 500
});timeline.play();

弹簧动画

const spring = createSpring({mass: 1,stiffness: 100,damping: 10,velocity: 0
});animate('.ball', {translateY: 100,easing: spring.ease
});

核心代码

动画引擎核心

export class Engine extends Clock {constructor(initTime) {super(initTime);this.useDefaultMainLoop = true;this.pauseOnDocumentHidden = true;this.defaults = defaults;this.paused = isBrowser && doc.hidden ? true  : false;this.reqId = null;}update() {const time = this._currentTime = now();if (this.requestTick(time)) {this.computeDeltaTime(time);const engineSpeed = this._speed;const engineFps = this._fps;let activeTickable = this._head;while (activeTickable) {const nextTickable = activeTickable._next;if (!activeTickable.paused) {tick(activeTickable,(time - activeTickable._startTime) * activeTickable._speed * engineSpeed,0,0,activeTickable._fps < engineFps ? activeTickable.requestTick(time) : tickModes.AUTO);}activeTickable = nextTickable;}additive.update();}}
}

颜色转换工具

export const convertColorStringValuesToRgbaArray = colorString => {return isRgb(colorString) ? rgbToRgba(colorString) :isHex(colorString) ? hexToRgba(colorString) :isHsl(colorString) ? hslToRgba(colorString) :[0, 0, 0, 1];
}const rgbToRgba = rgbValue => {const rgba = rgbExecRgx.exec(rgbValue) || rgbaExecRgx.exec(rgbValue);const a = !isUnd(rgba[4]) ? +rgba[4] : 1;return [+rgba[1],+rgba[2],+rgba[3],a]
}

缓动函数实现

export const cubicBezier = (mX1 = 0.5, mY1 = 0.0, mX2 = 0.5, mY2 = 1.0) => (mX1 === mY1 && mX2 === mY2) ? none :t => t === 0 || t === 1 ? t :calcBezier(binarySubdivide(t, mX1, mX2), mY1, mY2);const calcBezier = (aT, aA1, aA2) => (((1 - 3 * aA2 + 3 * aA1) * aT + (3 * aA2 - 6 * aA1)) * aT + (3 * aA1)) * aT;

更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
公众号二维码

http://www.wuyegushi.com/news/932.html

相关文章:

  • 无监督通用异常检测方法SEAD解析
  • Metasploit Framework 6.4.76 (macOS, Linux, Windows) - 开源渗透测试框架
  • C#性能优化:为何 x * Math.Sqrt(x) 远胜 Math.Pow(x, 1.5)
  • Metasploit Pro 4.22.8-2025063001 (Linux, Windows) - 专业渗透测试框架
  • Spring AI 框架中如何集成 MCP?
  • 提升效率:AI 知识库在软件开发中的应用
  • Microsoft SQL Server 2022 RTM GDR CU20 (2025 年 7 月更新)
  • SQL Server Management Studio (SSMS) 21 - 微软数据库管理工具
  • 使用Python进行文件操作
  • 两种刻板印象
  • Microsoft SQL Server 2019 RTM GDR CU32 (2025 年 7 月更新)
  • 分享一个 MySQL binlog 分析小工具
  • OI 回忆录
  • 后端开发必备:生产环境异常自动电话通知方案
  • Microsoft SQL Server 2017 RTM GDR CU31 (2025 年 7 月更新)
  • Vue3入门与工程化实践
  • 分块莫队
  • ACME协议
  • Microsoft SQL Server 2016 with SP3 GDR (2025 年 7 月更新)
  • 网络流量中的旗帜狩猎:Wireshark CTF实战手册
  • AC自动机?WA了。。
  • sa后缀数组7.28
  • 哈希 kmp trie树
  • 多语言ppt改进
  • day30
  • redis的过期时间算法为什么要使用最小堆来实现时间轮,为什么不使用一个循环数组作为核心数据结构(ds)
  • 读心与芯:我们与机器人的无限未来07机器人的风险
  • 多项式 - 生成函数
  • 图灵奖和诺贝尔奖双料得主、AI教父Hinton:AI超越人类后,我们该怎么做
  • ICCV 2025 | 浙大等提出 SGCDet:自适应3D体素构建,重新定义多视图室内3D检测