什么是 Lottie

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

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 进行导出的,开发者完全不用做什么额外的代码工作,就能够使用原生方式将其渲染出来。

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)

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

2.安装 bodymovin 插件

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

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

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

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

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

用 lottie-web 实现动画效果

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

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

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

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

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

小羊动画的 JSON 文件内容:

2.安装 lottie-web 依赖

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

安装依赖:

npm install lottie-web -S

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

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

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

<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 animationrenderer: 'svg',loop: true,autoplay: true,path: sheepJson // the path to the animation json});},
};
</script>

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

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

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

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

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

vue 里怎么用 lottie-web 实现动画效果?相关推荐

  1. vue 网页滚动到指定位置显示动画效果

    大部分的网页,在滚动到一定位置的时候,当前区块的文案或者图片有一些飞入,淡入淡出,向上划入的动画效果 //向上划入样式 .boxUp {transform: translateY(0%) !impor ...

  2. Vue中实现文字向上滚动的动画效果

    在Vue中,想要实现文字向上滚动的效果,分成两种情况: 1 无缝滚动 无缝滚动如图: 我说的无缝滚动主要是指两点: 滚动中没有停顿 从头至尾再循环播放时没有停顿 实现这种情况可以使用CSS3的动画实现 ...

  3. 【登录页星空和捂脸动画特效】vue 实现掘金登录页捂脸动画效果,css 实现登录页星空动画流星效果【通俗易懂】

    前言: 这里是展示一下做的登录页的一个好看的样式,同时也写了个下掘金登录页很有意思的捂脸小动画怎么实现的,感觉放在一起还挺好看的. 虽然不知道有没有问题,但是还是声明一下:我就是写来学习学习这种设计, ...

  4. vue中怎样实现弹出层动画效果?由上而下渐渐显示---封装成复用组件

    子组件: <template><div class="home"><!-- 首先将要过渡的元素用transition包裹,并设置过渡的name --& ...

  5. HTML里关于空间转换3D和动画效果的实现

    一.3D坐标系 一定要记住3个坐标轴取值的正反: X 轴 往右越大,是正值, 否则反之 Y 轴 往下越大,是正值,否则反之 Z轴 (指向我们)越大,是正值,否则反之 3D 位移动 transform: ...

  6. vue + svg 绘制水波纹、波浪动画效果

    效果: 实现可配置图像大小.水面高度.波浪高度.波浪速度等 <template><div class="wave-svg" :style="`width ...

  7. vue中怎样实现弹出层动画效果?由上而下渐渐显示

    1 <template><div class="home"><!-- 首先将要过渡的元素用transition包裹,并设置过渡的name --> ...

  8. vue移动端过渡动画_Vue仿微信app页面跳转动画效果

    10:14:11独立开发者在开发移动端产品时,为了更高效,通常会使用Web技术来开发移动端项目,可以同时适配Android.iOS.H5,稍加改动还可适配微信小程序. 在使用Vue.js开发移动端页面 ...

  9. python能制作ppt动画效果吗_原来用PPT也能做出神级的动画效果!

    一个好的PPT不光需要整齐的格式.精彩的文案和配图,有时一个动画也能产生非常棒的吸睛效果,为整个PPT添加灵动的色彩. 但是大部分人会使用(或者说常使用)的动画就那么几种:百叶窗.飞入.飞出.弹跳-这 ...

  10. vue使用lottie渲染json动画

    1.安装vue-lottie $ npm install vue-lottie --save 2.在组件中使用Lottie渲染json动画 <template><Lottie :op ...

最新文章

  1. php函数:register_shutdown_function
  2. ignite服务中的bean注入为空
  3. 二、用FTP同步服务器
  4. django+asyncio资料调研整合
  5. Linux基础知识之用户和用户组以及 Linux 权限管理
  6. linux php gmagick,Linux下编译安装GraphicsMagick及PHP扩展gmagick
  7. Drozer的基本使用
  8. 移动硬盘上装双系统Linux
  9. 论文笔记 · Symmetry and Group in Attribute-Object Compositions(CVPR 2020)
  10. BeagleBone Black 从零到一 (2 MLO、U-Boot)
  11. Python基础第一周
  12. 构建安全新模式,零信任如何破局 ?
  13. 天天背单词--的设计与实现(一)
  14. rhel8安装docker-ce
  15. E: 错误,pkgProblemResolver::Resolve 发生故障,这可能是有软件包被要求保持现状的缘故。
  16. Codepage的定义和历史
  17. qwq。。胡诌qwq
  18. ABP zero 4.2 发布
  19. OTT系统和IPTV系统不一样吗?有什么区别?
  20. 【SVM分类】基于布谷鸟算法优化实现SVM数据分类matlab源码

热门文章

  1. Linux执行后台work相关
  2. 网络3共享网络2计算机打印机,如何添加本地打印机与共享网络上的打印机
  3. 成都大数据语言培训:改变人们的生活的大数据趋势
  4. 软件工程 第一章 软件工程概述
  5. 智慧农业顶层设计与解决方案
  6. python判断火车票座位_火车票买不到?看我用python监控票源
  7. 【预测性维护案例】助力硬盘制造商提高制造过程的质量和效率
  8. MCNP 在Linux系统的安装步骤
  9. 北京中关村已拥有100家上市公司
  10. 华硕主板设置定时自动开机