vue 里怎么用 lottie-web 实现动画效果?

简介: vue 里怎么用 lottie-web 实现动画效果?

什么是 Lottie

官网地址:https://airbnb.design/lottie/


20210630093820632.png


Lottie 是 Airbnb 开发的一款能够为原生应用添加动画效果的开源工具。Lottie 目前提供了 iOS, Android, 和 React Native 版本,能够实时渲染 After Effects 动画特效。


Android : https://github.com/airbnb/lottie-android

iOS : https://github.com/airbnb/lottie-ios

React Native : https://github.com/airbnb/lottie-react-native


Lottie 在不需要对代码进行重写的情况下让工程师更加方便的创建更丰富的动画效果。有了 Lottie 你就不再需要使用 Gif 动画来展现效果。


目前,Lottie支持路径修剪,蒙版、遮盖等操作。此外还有一个可选的缓存机制,对那些频繁使用的东西能够更快加载。这款应用的目标就是帮助开发者和动画师能够更轻松的为应用创建动画,从而在整体上提升互动因素。


Lottie 依赖于 Bodymovin 插件。下面这些动画,就是由动画设计师使用 After Effects 创作,然后使用 Bodymovin 进行导出的,开发者完全不用做什么额外的代码工作,就能够使用原生方式将其渲染出来。

e12f23c136b32f60d521a43eba6e5fdd.gif


image.gif



Lottie 框架很好地解决了动画制作与开发隔离,以及多平台统一的问题。


Lottie 这个名字来自于一名德国导演洛特·赖尼格尔(Lotte Reiniger),她最著名的电影叫作“阿赫迈德王子历险记(The Adventures of Prince Achmed)”。这个框架和其他的动画框架不太一样,动画的编写和维护将由动画设计师完成,完全无需开发者操心。



什么是 Bodymovin ?

Bodymovin 是 Hernan Torrisi 做的一个 After Effects 的插件,起初导出的 JSON 文件只是通过 JavaScript 在网页中进行动画的播放,后来才将 JSON 文件的解析渲染应用到了其他平台上。


如何使用 Bodymovin ?

下面参考:前端解放生产力之–动画(Adobe Effects + bodymovin + lottie)



1. 首先是安装 AE (Adobe Effects)

具体怎么安装就不赘述了,随便一搜就有很多教程。


20210630111302512.png


2.安装 bodymovin 插件

安装完 AE 以后,装一个 AE 的插件 bodymovin, github 地址为: https://github.com/airbnb/lottie-web 在 lottie-web/build/extension/ 目录下面有一个 bodymovin.zxp 的文件。



  1. 使用 ZXP installer 安装。
  2. bodymovin.zxp 文件后缀改成.zip然后解压,放到 AE 的安装目录下 \Adobe\CEP\extensions

20210630114007331.png


接着就是打开 AE,新建一个动画或者导入一个 AE 模板,然后在 编辑 > 首选项 > 常规 中将允许脚本写入和访问网络勾上


20210704110822555.png


然后在 窗口 > 扩展 > Bodymovin 将 Bodymovin 选中,会弹出一个插件框

20210704111234296.png


将上图中 1 的位置选中,在 2 的位置选择一个位置确定,然后点击绿色按钮 render,导出 data.json 和其他文件,这时候可以点击 preview进行预览,只需要选择刚才导出的 data.json 文件即可。



用 lottie-web 实现动画效果

通过上面的我们大致了解了一下 lottie,如果没有 AE 的话,动画效果的 JSON 文件可以通过 LottieFiles 网站获取。


LottieFiles 网站还是一个动画设计师分享作品的平台,每个动画效果的 JSON 文件都可下载使用。所以,如果你现在没有动画设计师配合的话,可以到这个网站去查找并下载一个 Bodymovin 生成的 JSON 文件,然后运用到工程中去试试效果。


比如,用这只小羊实现一下:https://lottiefiles.com/featured?page=2


20210704111822509.png



1.准备动画效果的 JSON 文件

  • 第一步:注册登录 LottieFiles
  • 第二步:找到自己喜欢的动画,点击进去,比如上面的小羊,点击进去详情
  • 第三步:点击 Download 下载,选择Lottie JSON
  • 第四步:将下载好的文件复制到需要的地方



20210704112532938.png



小羊动画的 JSON 文件内容:


20210704113002274.png


2.安装 lottie-web 依赖

这里我们采用 npm 安装,当然也可以使用脚本引用的方式,这里就不采用这种了,具体可以参考https://github.com/airbnb/lottie-web#option-1-recommended


安装依赖:

npm install lottie-web -S



20210704114711573.png



3.使用 lottie-web 在页面渲染动画

我们可以看一下官网的例子:https://github.com/airbnb/lottie-web#option-1-recommended

20210704143921613.png



于是我们就模仿写一下:很快啊,就复制粘贴好了

<template>
<div class='lottie'>
  <h1>凯小默测试 lottie-web 页</h1>
  <div ref="bodyAnimation"></div>
</div>
</template>
<script>
import lottie from 'lottie-web';
console.log(lottie);
import sheepJson from '@/assets/lottie-json/66619-sheep.json';
console.log(sheepJson);
export default {
  name: 'lottie',
  mounted() {
    lottie.loadAnimation({
      container: this.$refs.bodyAnimation, // the dom element that will contain the animation
      renderer: 'svg',
      loop: true,
      autoplay: true,
      path: sheepJson // the path to the animation json
    });
  },
};
</script>


2021070414565861.png



但是运行起来的结果却是:TypeError: params.path.lastIndexOf is not a function


20210704145622462.png


真的害怕,于是我又去找这个问题的原因,终于在 github 上我找到了 https://github.com/airbnb/lottie-web/issues/235:params.path.substr is not a function #235


2021070414585653.png



解决:所以我们代码需要将参数 path 改成 animationData :

lottie.loadAnimation({
  container: this.$refs.bodyAnimation, // the dom element that will contain the animation
  renderer: 'svg',
  loop: true,
  autoplay: true,
  animationData: sheepJson // the path to the animation json
});



然后在刷新,发现就 ok 了。关于其他参数也可以自己去测试玩玩。

20210704150035742.png















目录
相关文章
|
3月前
|
前端开发 JavaScript 安全
入门Vue+.NET 8 Web Api记录(一)
入门Vue+.NET 8 Web Api记录(一)
144 4
|
3月前
|
Web App开发 JavaScript 前端开发
[译] 用 Web Worker 改善 Vue 组件性能
[译] 用 Web Worker 改善 Vue 组件性能
|
27天前
|
JavaScript 前端开发 Java
vue2知识点:Vue封装的过度与动画
vue2知识点:Vue封装的过度与动画
14 0
|
2月前
|
JavaScript 前端开发
【前端web入门第一天】03 综合案例 个人简介与vue简介
该网页采用“从上到下,先整体再局部”的制作思路,逐步分析并编写代码实现个人简介页面。内容涵盖尤雨溪的背景、学习经历及主要成就,同时介绍其开发的Vue.js框架特点。代码结构清晰,注重细节处理,如使用快捷键提高效率,预留超链接位置等,确保最终效果符合预期。
|
1月前
|
JavaScript
vue尚品汇商城项目-day03【16.开发Search组件模块中的TypeNav商品分类菜单(过渡动画效果)+17.(优化)针对三级菜单联动进行优化,优化方向为减少查询】
vue尚品汇商城项目-day03【16.开发Search组件模块中的TypeNav商品分类菜单(过渡动画效果)+17.(优化)针对三级菜单联动进行优化,优化方向为减少查询】
35 0
|
3月前
|
JavaScript 前端开发 API
【Vue 3】一个小巧玲珑的 Vue 组件切换动画库,开源且免费!!
【Vue 3】一个小巧玲珑的 Vue 组件切换动画库,开源且免费!!
【Vue 3】一个小巧玲珑的 Vue 组件切换动画库,开源且免费!!
|
3月前
|
JavaScript 前端开发 UED
Vue.js动画魔法:解锁流畅过渡,让每一次交互都成为用户心中的小确幸!
【8月更文挑战第30天】在Vue.js中,动画与过渡效果不仅是视觉点缀,更是提升用户体验的关键。通过流畅的动态效果,应用的互动性和吸引力得以增强,从而提高用户满意度和参与度。`&lt;transition&gt;`和`&lt;transition-group&gt;`组件结合CSS过渡,可轻松实现元素的进入、离开及列表变化动画。合理的性能优化,如使用硬件加速,能避免页面卡顿,确保动画既美观又高效。下面是一个简单的淡入淡出效果示例,展示了如何利用Vue.js实现平滑的动画过渡。总之,恰当的动画设计能显著提升应用的用户体验。
56 0
Vue.js动画魔法:解锁流畅过渡,让每一次交互都成为用户心中的小确幸!
|
3月前
|
JavaScript
Vue3数值动画(NumberAnimation)
该文档介绍了一个基于 Vue 的数值动画组件 `NumberAnimation`,提供了丰富的配置选项,如起始值、目标值、动画时长等,并支持自定义前缀、后缀及样式。通过简单的方法和事件,可以轻松控制动画的播放与停止。
117 0
Vue3数值动画(NumberAnimation)
|
3月前
|
前端开发
HTML+CSS动画实现动感3D卡片墙:现代Web设计的视觉盛宴
HTML+CSS动画实现动感3D卡片墙:现代Web设计的视觉盛宴
|
3月前
|
缓存 监控 前端开发
WEB前端三大主流框架:React、Vue与Angular
在Web前端开发中,React、Vue和Angular被誉为三大主流框架。它们各自具有独特的特点和优势,为开发者提供了丰富的工具和抽象,使得构建复杂的Web应用变得更加容易。
237 6