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















目录
相关文章
|
1月前
|
JSON 前端开发 JavaScript
前端使用lottie-web,使用AE导出的JSON动画贴心教程
前端使用lottie-web,使用AE导出的JSON动画贴心教程
105 2
|
4天前
|
缓存 前端开发 JavaScript
高性能Web动画和渲染原理系列(2)——渲染管线和CPU渲染
高性能Web动画和渲染原理系列(2)——渲染管线和CPU渲染
|
13天前
|
JavaScript 前端开发 UED
在Web开发中,拖放(Drag and Drop)和动画效果是提升用户体验的重要工具
【6月更文挑战第12天】本文介绍了如何使用JavaScript实现拖放功能和基本动画效果。拖放功能通过监听mousedown、mousemove和mouseup事件,计算并更新元素位置实现。动画效果则利用requestAnimationFrame函数创建平滑移动的视觉效果。示例代码包括HTML结构和对应的JavaScript实现。
34 1
|
24天前
|
JavaScript 前端开发 Java
基于SpringBoot+Vue+uniapp的在线开放课程的Web前端的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的在线开放课程的Web前端的详细设计和实现(源码+lw+部署文档+讲解等)
|
5天前
|
移动开发 小程序 安全
基础入门-APP架构&小程序&H5+Vue语言&Web封装&原生开发&Flutter
基础入门-APP架构&小程序&H5+Vue语言&Web封装&原生开发&Flutter
|
1月前
|
JavaScript 前端开发 容器
< 每日小技巧: 基于Vue状态的过渡动画 - Transition 和 TransitionGroup>
Vue 的 `Transition` 和 `TransitionGroup` 是用于状态变化过渡和动画的组件。`Transition` 适用于单一元素或组件的进入和离开动画,而 `TransitionGroup` 用于 v-for 列表元素的增删改动画,支持 CSS 过渡和 JS 钩子。
< 每日小技巧: 基于Vue状态的过渡动画 - Transition 和 TransitionGroup>
|
1月前
|
JavaScript 前端开发
Vue的动画方式有几种
Vue的动画方式有几种
|
1月前
|
前端开发 算法
【css炫酷动画】让面试官眼前一亮的故障风格文字动画,3年Web前端开发工程师面试经验分享
【css炫酷动画】让面试官眼前一亮的故障风格文字动画,3年Web前端开发工程师面试经验分享
|
1月前
|
JavaScript 前端开发 API
Vue中的组件:构建现代Web应用的基石
Vue中的组件:构建现代Web应用的基石
|
1月前
|
JavaScript 前端开发 UED
动画效果:给 Vue 应用添加过渡和动画
【4月更文挑战第22天】Vue 框架提供强大的过渡和动画功能,增强用户体验,创建流畅的用户界面。通过CSS动画、设置过渡属性和自定义过渡,开发者能实现多样化效果。同时,结合组件状态、关注性能并测试优化,确保在不同设备上运行良好,打造引人入胜的应用交互。