Lottie 是Airbnb开源的一个面向 iOS、Android、React Native 的动画库,能分析 Adobe After Effects 导出的动画,并且能让原生 App 像使用静态素材一样使用这些动画,完美实现动画效果。
第一种:lottie-web
第二种:vue-lottie
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<style>
</style>
<body>
<div id="app">
<div id="lottie_box"></div>
<button @click="startFun">播放</button>
<button @click="suspendFun">暂停</button>
</div>
</body>
<!-- 引入本地的vue -->
<script src="./js/vue.js"></script>
<!-- 也可以引入线上vue 官网有安装教程-->
<!-- https://cn.vuejs.org/v2/guide/installation.html -->
<!-- 下面引入 lottie的插件-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/lottie-web/5.9.4/lottie.min.js"
integrity="sha512-ilxj730331yM7NbrJAICVJcRmPFErDqQhXJcn+PLbkXdE031JJbcK87Wt4VbAK+YY6/67L+N8p7KdzGoaRjsTg=="
crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script>
var app = new Vue({
el: '#app',
data: {
lottie: {},
},
mounted() {
this.lottie = lottie.loadAnimation({
container: document.getElementById('lottie_box'), // 需要绑定的div
renderer: 'svg', // 渲染方式:svg:支持交互、不会失帧、canvas、html:支持3D,支持交互
loop: true, // 循环播放,默认:true
autoplay: true, // 自动播放 ,默认true
path: 'https://uploads-ssl.webflow.com/624181072db315237608dddf/62442d1d0099b981e929e0e5_black%20squares.json' // 现在用的线上json 路径(或者自己有json动画文件修改自己本地路径)
})
},
methods: {
startFun: function () {
this.lottie.play() // 点击播放
},
suspendFun: function () {
this.lottie.pause(); // 点击暂停播放
},
},
watch: {}
})
</script>
</html>
(1)首先安装lottie-web插件
npm install lottie-web
(2)源码如下
<template>
<div class="box">
<div id="lottie_box"></div>
<button @click="startFun">播放</button>
<button @click="suspendFun">暂停</button>
</div>
</template>
<script>
import lottie from 'lottie-web';
export default {
name: 'Lottie',
data () {
return {
lottie: {},
}
},
mounted () {
this.lottie = lottie.loadAnimation({
container: document.getElementById('lottie_box'), // 需要绑定的div
renderer: 'svg', // 渲染方式:svg:支持交互、不会失帧、canvas、html:支持3D,支持交互
loop: true, // 循环播放,默认:true
autoplay: true, // 自动播放 ,默认true
path: 'https://uploads-ssl.webflow.com/624181072db315237608dddf/62442d1d0099b981e929e0e5_black%20squares.json' // 现在用的线上json 路径(或者自己有json动画文件修改自己本地路径)
})
},
methods: {
suspendFun: function () {
this.lottie.pause();
},
startFun: function () {
this.lottie.play()
}
},
}
</script>
<style>
.box {
width: 100%;
height: 100%;
}
#bm {
width: 100%;
height: 100%;
margin: 0px auto;
}
</style>
(1)首先安装vue-lottie插件
npm install --save vue-lottie
(2)在main.js全局挂载一下
import lottie from 'vue-lottie';
Vue.component('lottie', lottie)
(3)代码如下和lottie-web一样
<template>
<div class="box">
<div id="lottie_box"></div>
<button @click="startFun">播放</button>
<button @click="suspendFun">暂停</button>
</div>
</template>
<script>
import lottie from 'lottie-web';
export default {
name: 'Lottie',
data () {
return {
lottie: {},
}
},
mounted () {
this.lottie = lottie.loadAnimation({
container: document.getElementById('lottie_box'), // 需要绑定的div
renderer: 'svg', // 渲染方式:svg:支持交互、不会失帧、canvas、html:支持3D,支持交互
loop: true, // 循环播放,默认:true
autoplay: true, // 自动播放 ,默认true
path: 'https://uploads-ssl.webflow.com/624181072db315237608dddf/62442d1d0099b981e929e0e5_black%20squares.json' // json 路径
})
},
methods: {
suspendFun: function () {
this.lottie.pause();
},
startFun: function () {
this.lottie.play()
}
},
}
</script>
<style>
.box {
width: 100%;
height: 100%;
}
#bm {
width: 100%;
height: 100%;
margin: 0px auto;
}
</style>
下面列一些常用的配置属性,更多配置项请看:https://github.com/airbnb/lottie-web
animation.goToAndStop(30, true) // 跳转到第30帧并停止
animation.goToAndPlay(300) // 跳转到第300毫秒并播放
animation.playSegments([10,20], false) // 播放完之前的片段,播放10-20帧
animation.playSegments([[0,5],[10,18]], true) // 直接播放0-5帧和10-18帧
animation.addEventListener('data_ready', () => { console.log('(111)'); });
感觉文章好的话记得点个心心和关注和收藏,有错的地方麻烦指正一下,如果需要转载,请标明出处,多谢!!!