Javascript动画插件lottie-web的使用方法
lottie可以将一个json数据渲染成一个动画,而且支持多平台,在不同的平台下使用同一个json文件即可实现相同的效果,非常的方便。这里介绍前端的使用方法。
https://github.com/airbnb/lottie-web
1.配合vue-cli使用
1.npm安装lottie-web
npm install lottie-web
2.创建loading.vue
2.1引入lottie插件和需要的json数据
2.2接收父组件传入的配置参数
2.3在页面渲染完毕后进行初始化
<template>
<!-- 为容器绑定样式 -->
<div :style="style" ref="lavContainer"></div>
</template>
<script>
//引入lottie
import lottie from 'lottie-web'
//引入json数据
import animationData from '../../static/bitcoin.json'
export default {
props: { //接收父元素传入的参数
options: {
type: Object,
required: true
},
height: Number,
width: Number
},
data() {
return {
style: { //设置容器的样式
width: this.width ? `${this.width}px` : '40%', //如果父元素有传参则使用传参的值,没有则=40%
height: this.height ? `${this.height}px` : '100%',//如果父元素有传参则使用传参的值,没有则=100%
overflow: 'hidden',//超出容器隐藏
margin: '0 auto' //水平居中
}
}
},
mounted() {
lottie.loadAnimation({ //初始化
container: this.$refs.lavContainer,//在哪个dom容器中生效
renderer: 'svg',//渲染方式svg
loop: this.options.loop !== false,//是否循环 如果传入的参数options.loop不为false 则一直循环 即默认循环
autoplay: this.options.autoplay !== false,//是否自动播放 如果传入的参数options.autoplay不为false 则自动播放 即默认自动播放
animationData: animationData,//动画数据,这个必须要有
rendererSettings: this.options.rendererSettings
})
}
}
</script>
3.父组件引用loadding.vue
可以为loadding组件设定一个容器,通过空中这个容器的display属性来控制loadding组件的显示和隐藏
<template>
<div class="test_wrap">
<div v-show="show">
<loadding :options="defaultOptions" />
</show>
</div>
</template>
<script>
//引入子组件
import loadding from '@/components/loadding'
export default {
data () {
return {
show:false,
defaultOptions: {
autoplay: true,//自动播放
loop: true,//循环播放
},
}
},
components: {
'loadding': loadding
}
}
</script>
2.在HTML页面中使用
1.引入lottie-web这个插件 可以使用cdn,也可以引入本地的
<script class="lazy" data-src="https://cdnjs.cloudflare.com/ajax/libs/bodymovin/5.6.8/lottie_svg.min.js">
</script>
2.页面加载完毕后,初始化,并传入相应的配置项
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script class="lazy" data-src="https://cdnjs.cloudflare.com/ajax/libs/bodymovin/5.6.8/lottie_svg.min.js"></script>
<script class="lazy" data-src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>
<title>Document</title>
</head>
<body>
<div class="box"></div>
</body>
</html>
<script>
$(function(){
//getJSON() 方法使用 AJAX 的 HTTP GET 请求获取 JSON 数据
$.getJSON("./betcoin.json",function(result){
//获取到数据后进行初始化
console.log(result)
lottie.loadAnimation({ //初始化
container: document.querySelector('.box'),//在哪个dom容器中生效
renderer: 'svg',//渲染方式svg
loop: true,//循环
autoplay: true,//自动播放
animationData: result,//动画数据
})
})
})
</script>
注意:json数据使用了ajax进行获取,要留意跨域问题。
为了避免跨域或者本地读取时的权限问题,可以讲json文件的数据用 反引号 `` 包裹起来,用一个全局变量保存,然后保存为betcoin2.js,即可使用这个数据了,记得用JSON.parse()将json字符串转换回对象格式
//betcoin2.js
var animationData = `省略,里面为原json对象`
<script class="lazy" data-src="./betcoin2.js"></script>
<script>
window.onload = function(){
lottie.loadAnimation({ //初始化
container: document.querySelector('.box'),//在哪个dom容器中生效
renderer: 'svg',//渲染方式svg
loop: true,//循环
autoplay: true,//自动播放
animationData: JSON.parse(animationData),//动画数据
})
}
</script>
到此这篇关于Javascript动画插件lottie-web的使用方法的文章就介绍到这了,更多相关Javascript动画插件内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341