Lottie是一个能够经过bodymovin插件来解析Adobe After Effects动画,并生成json格式的文件。该json文件能够经过Lottie开源库在iOS,Android,macOS,React Native中进行解析生成动画效果。html
下面是一些官网给出的动画效果:前端
一直以来咱们的设计同窗都是使用设计软件,设计动画效果,开发同窗再经过代码来实现动效。对于复杂的动画,开发同窗要用很长的时间来实现,而且还有可能没法达到设计同窗的最初的效果。
还有一种实现动画的方式就是gif图。然而Android并不支持gif图,并且gif图对于移动端还有占用过多空间的问题。vue
那么,Lottie为咱们作了什么呢。
首先,设计同窗在Adobe After Effects上设计了动画效果,经过bodymovin插件,能够将动画导出成一个json文件。
而后,开发同窗就能够经过Lottie将前面生成的json文件渲染成动画效果。
这样就能够高效的实现不少复杂动画效果啦。npm
对于如今十分流行的前端框架vuejs,固然有支持Lottie的组件。json
vue-lottie是一个基于vuejs的动画效果实现组件。它基于lottie开源项目,能够将After Effects导出的json文件渲染成svg/canvas/html动画效果。canvas
经过NPM安装前端框架
npm install --save vue-lottie
<template> <div id="app"> <lottie :options="defaultOptions" :height="400" :width="400" v-on:animCreated="handleAnimation"/> <div> <p>Speed: x{{animationSpeed}}</p> <input type="range" value="1" min="0" max="3" step="0.5" v-on:change="onSpeedChange" v-model="animationSpeed"> </div> <button v-on:click="stop">stop</button> <button v-on:click="pause">pause</button> <button v-on:click="play">play</button> </div> </template> <script> import Lottie from './lottie.vue'; import * as animationData from './assets/pinjump.json'; export default { name: 'app', components: { 'lottie': Lottie }, data() { return { defaultOptions: {animationData: animationData}, animationSpeed: 1 } }, methods: { handleAnimation: function (anim) { this.anim = anim; }, stop: function () { this.anim.stop(); }, play: function () { this.anim.play(); }, pause: function () { this.anim.pause(); }, onSpeedChange: function () { this.anim.setSpeed(this.animationSpeed); } } } </script>
轮子工厂--一个分享优秀的vue,angular组件的网站app