当前位置:网站首页>web端动效 lottie-web 使用
web端动效 lottie-web 使用
2022-08-04 01:58:00 【ZionHH】
Lottie 是 Airbnb 开发的,一个适用于 Android、iOS、Web 和 Windows 的库,能够渲染 Adobe After Effects 动画特效。
- 安装
yarn add lottie-web
- 使用方法
我这里创建了一个组件MyLottie.vue
<!-- components/MyLottie -->
<template>
<!-- 渲染容器 -->
<div class="lottie"></div>
</template>
<script> import lottie from 'lottie-web' export default {
props: {
animationData: {
type: Object, required: true }, autoplay: {
type: Boolean, default: true }, loop: {
type: Boolean, default: true } }, data () {
return {
lottie: null } }, mounted () {
this.intLottie() }, methods: {
intLottie () {
const {
animationData, autoplay, loop } = this this.lottie = lottie.loadAnimation({
container: this.$el, // 渲染容器 renderer: 'svg', // 渲染方式 svg|canvas|html loop, // 是否循环 true|false|number autoplay, // 自动播放 true|false animationData // lottie json文件 }) } } } </script>
<style lang="scss" scoped> .lottie {
width: 200px; height: 200px; } </style>
在页面引用组件,可以去官方社区下载动画json
<template>
<div>
<MyLottie :animationData="lottieJson" />
</div>
</template>
<script> import MyLottie from '@/components/MyLottie' export default {
name: 'Home', components: {
MyLottie }, data () {
return {
// lottie json文件 lottieJson: require('@/assets/lottie/lottie.json') } } } </script>
这样一个lottie动画就出来了
下面结合lottie的一些实例方法,将我们的lottie组件添加鼠标事件,官方文档
html部分修改
<div class="lottie" @mouseenter="onMouseenter" @mouseleave="onMouseleave"></div>
methods部分修改
methods: {
intLottie () {
let {
animationData, autoplay, loop } = this
if (!autoplay) {
// 这里交互播放不循环
loop = false
}
this.lottie = lottie.loadAnimation({
container: this.$el, // 渲染容器
renderer: 'svg', // 渲染方式
loop, // 是否循环
autoplay, // 自动播放
animationData // lottie json文件
})
},
onMouseenter () {
// 我这里demo,非自动播放则判断为鼠标交互播放,具体封装根据自身业务场景来
if (!this.autoplay) {
this.lottie.setDirection(1)
this.lottie.play()
// 监听lottie播放结束
this.lottie.addEventListener('complete', e => {
this.lottie.stop()
})
}
},
onMouseleave () {
this.lottie.removeEventListener('complete')
if (!this.autoplay) {
// 改变播放方向,鼠标移出回退
this.lottie.setDirection(-1)
}
}
}
}
引入组件处修改
<MyLottie :animationData="lottie" :autoplay="false" />
下面是改造后的效果
边栏推荐
- Download install and create/run project for HBuilderX
- Qt中对象树的机制介绍以及底层实现,各种结果分析:(以及自己写容易犯错的点)
- 5.scrapy中间件&分布式爬虫
- How to copy baby from Taobao (or Tmall store) through API interface to Pinduoduo interface code docking tutorial
- 参加Oracle OCP和MySQL OCP考试的学员怎样在VUE预约考试
- 2022G1工业锅炉司炉考试练习题及模拟考试
- KunlunBase 1.0 is released!
- 【QT小记】QT中信号和槽的基本使用
- 持续投入商品研发,叮咚买菜赢在了供应链投入上
- 小程序:扫码打开参数解析
猜你喜欢
C程序编译和预定义详解
nodejs+express实现数据库mysql的访问,并展示数据到页面上
阿里云技术专家邓青琳:云上跨可用区容灾和异地多活最佳实践
Slipper - virtual point, shortest path
DDTL:远距离的域迁移学习
2022广东省安全员A证第三批(主要负责人)考试题库及模拟考试
企业虚拟偶像产生了实质性的价值效益
esp32 releases robot battery voltage to ros2 (micro-ros+CoCube)
Flink jdbc connector 源码改造sink之 clickhouse多节点轮询写与性能分析
APP电商如何快速分润分账?
随机推荐
5. Scrapy middleware & distributed crawler
Promise solves blocking synchronization and turns asynchronous into synchronous
持续投入商品研发,叮咚买菜赢在了供应链投入上
Simple sorting (summer vacation daily question 14)
Deng Qinglin, Alibaba Cloud Technical Expert: Best Practices for Disaster Recovery across Availability Zones and Multiple Lives in Different Locations on the Cloud
Continuing to pour money into commodities research and development, the ding-dong buy vegetables in win into the supply chain
Please refer to dump files (if any exist) [date].dump, [date]-jvmRun[N].dump and [date].dumpstream.
Example 035: Setting the output color
参加Oracle OCP和MySQL OCP考试的学员怎样在VUE预约考试
nodejs+express实现数据库mysql的访问,并展示数据到页面上
nodejs 安装多版本 版本切换
nodejs installation and environment configuration
Sticker Spelling - Memory Search / Shape Pressure DP
第13章 网络安全漏洞防护技术原理与应用
多线程 之 JUC 学习篇章一 创建多线程的步骤
企业虚拟偶像产生了实质性的价值效益
Sky map coordinate system to Gaode coordinate system WGS84 to GCJ02
云开发校园微社区微信小程序源码/二手交易/兼职交友微信小程序开源源码
实例037:排序
Web APIs BOM- 操作浏览器:swiper 插件