3分钟上手mojs动画库:从基础到高级的API速查手册
【免费下载链接】mojs 项目地址: https://gitcode.com/gh_mirrors/moj/mojs
你还在为网页动画效果单调而烦恼?还在为复杂的动画代码望而却步?本文将带你快速掌握mojs动画库的核心API,从基础到高级,让你轻松实现惊艳的网页动画效果。读完本文,你将能够:
- 快速安装和配置mojs动画库
- 掌握Html、Shape等核心类的使用方法
- 了解如何创建复杂的动画序列和时间线
- 学会使用缓动函数和路径动画增强视觉效果
关于mojs
mojs是一个快速、支持视网膜显示、模块化且开源的JavaScript运动图形库。与其他库相比,它具有不同的语法和代码动画结构方法。声明式API为你提供对动画的完全控制,使其易于自定义。
库提供了内置组件,如Html、Shape、Swirl、Burst和Stagger,帮助你从零开始创建动画,同时还提供了工具来帮助你以最自然的方式制作动画。在你的网站上使用mojs将增强用户体验,丰富视觉内容,并精确创建令人愉悦的动画。项目详情可参考README.md。
安装与配置
使用包管理器安装
Mojs已发布到NPM registry,因此你可以使用你喜欢的包管理器通过命令行解释器安装它。如果你熟悉javascript打包工具(如webpack或rollup),这是安装库的最佳方式。
# npm
npm install @mojs/core
# yarn
yarn add @mojs/core
然后像导入任何其他模块一样在构建中导入它:
import mojs from '@mojs/core';
new mojs.Html({
// ...
});
使用打包工具有许多优点,如输出压缩、代码分割、tree shaking等,因此我们鼓励你将此类工具与mojs一起使用。
使用CDN引入
要在网页中快速包含缩小的生产文件,请使用通用脚本标记从你喜欢的CDN加载最新构建:
<!-- 国内推荐使用 jsdelivr CDN -->
<script src="https://cdn.jsdelivr.net/npm/@mojs/core"></script>
然后使用以下方式实例化:
<script>
new mojs.Html({
// ...
});
</script>
默认情况下,如果未指定,CDN将自动定位mojs的@latest版本,并从dist/mo.umd.js加载UMD构建。
核心API速查
Html类
Html类源码用于创建HTML元素的动画效果。它提供了丰富的属性和方法来控制元素的变换、过渡和交互。
// 创建一个Html动画实例
const htmlAnimation = new mojs.Html({
el: '#target-element', // 目标元素
x: { 0: 100 }, // x轴位置变化,从0到100px
y: { 0: 50 }, // y轴位置变化,从0到50px
rotateZ: { 0: 360 }, // Z轴旋转,从0到360度
scale: { 1: 2 }, // 缩放,从1到2倍
duration: 1000, // 动画持续时间,1000毫秒
easing: 'cubic.out' // 缓动函数
});
// 播放动画
htmlAnimation.play();
Html类支持的主要变换属性包括:
- 位置:x, y, z
- 旋转:rotateX, rotateY, rotateZ
- 缩放:scale, scaleX, scaleY
- 倾斜:skewX, skewY
Shape类
Shape类源码用于创建各种基本图形的动画,如圆形、矩形、多边形等。它是创建复杂视觉效果的基础。
// 创建一个圆形动画
const circle = new mojs.Shape({
shape: 'circle', // 图形类型
radius: { 0: 50 }, // 半径从0到50px
fill: 'none', // 填充色
stroke: '#ff0066', // 描边色
strokeWidth: { 2: 0 }, // 描边宽度从2px到0
duration: 1500, // 动画持续时间
easing: 'elastic.out' // 缓动函数
}).play();
Shape类支持多种预定义形状,如:circle, rect, cross, polygon等,具体可查看形状相关源码。
Timeline类
Timeline类源码用于创建复杂的动画序列,它允许你精确控制多个动画的播放顺序和时间关系。
// 创建一个时间线
const timeline = new mojs.Timeline({
repeat: 2, // 重复次数,-1为无限循环
isYoyo: true // 是否来回播放
});
// 创建第一个动画
const animation1 = new mojs.Html({
el: '#box1',
x: { 0: 200 },
duration: 500
});
// 创建第二个动画
const animation2 = new mojs.Shape({
shape: 'circle',
radius: 30,
x: 200,
duration: 500,
delay: 300 // 延迟300ms开始
});
// 将动画添加到时间线
timeline.add(animation1, animation2);
// 播放时间线动画
timeline.play();
Burst类
Burst类源码用于创建类似爆炸效果的动画,非常适合制作强调和过渡效果。
// 创建一个爆炸效果
const burst = new mojs.Burst({
left: 0,
top: 0,
radius: { 0: 100 },
count: 12, // 粒子数量
children: {
shape: 'circle',
radius: 5,
fill: ['#ff0000', '#00ff00', '#0000ff'],
duration: 1500,
easing: 'ease.out'
}
});
// 点击页面任意位置触发爆炸效果
document.addEventListener('click', (e) => {
burst.tune({ x: e.pageX, y: e.pageY }).replay();
});
缓动函数
mojs提供了丰富的缓动函数来控制动画的节奏。这些函数定义在easing目录下,包括线性、二次、三次、弹性、弹跳等多种类型。
常用缓动函数示例:
linear.none:线性动画cubic.in: cubic缓入cubic.out: cubic缓出cubic.inOut: cubic缓入缓出elastic.out:弹性缓出bounce.out:弹跳缓出
实际应用示例
以下是一个结合多个API的综合示例,创建一个交互性的点赞动画效果:
// 创建点赞按钮动画
const likeButton = new mojs.Html({
el: '.like-button',
scale: { 1: 1.3, 1.3: 1 },
duration: 300,
easing: 'elastic.out'
});
// 创建心形爆炸效果
const heartBurst = new mojs.Burst({
el: '.like-button',
count: 7,
radius: { 20: 60 },
angle: 45,
children: {
shape: 'polygon',
sides: 5,
radius: { 3: 0 },
scale: 1,
fill: '#ff4081',
degreeShift: 'rand(-30, 30)',
duration: 700,
easing: 'ease.out'
}
});
// 绑定点击事件
document.querySelector('.like-button').addEventListener('click', function() {
likeButton.replay();
heartBurst.replay();
});
项目资源与支持
- 官方文档:虽然项目中没有提供完整的本地文档,但你可以参考README.md了解更多信息。
- 测试用例:spec/目录下包含了丰富的测试用例,可以作为API使用参考。
- 开发示例:dev/目录提供了开发环境和示例代码,可用于本地调试和学习。
浏览器支持情况
mojs支持以下浏览器版本:
- Chrome 49+
- Firefox 70+
- Opera 36+
- Safari 8+
- Edge 79+
许多其他浏览器也可能工作,但未经过广泛测试。
总结与展望
通过本文介绍的核心API,你已经具备了创建各种动画效果的基础。mojs提供了更多高级功能,如路径动画、缓动函数和时间线编辑器,等待你进一步探索。
建议从简单的Html和Shape动画开始实践,逐步掌握时间线和缓动函数的使用,最后尝试结合Burst等特效类创建更复杂的交互效果。
如果你觉得本文对你有帮助,请点赞、收藏并关注我们,以便获取更多关于mojs和前端动画的优质内容。下期我们将深入探讨mojs的高级动画技巧,敬请期待!
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



