当前位置: 首页 > news >正文

【Vue3组件】LottieAnimation组件封装,用于流畅的页面动画效果

lottie是什么就不多介绍了,自己封装了一个平时用的比较多的组件,主要用于快速使用lottie动画,支持自动播放循环播放暂停继续

必要的库–lottie-web

<template><div class="lottie" ref="lottieContainer"></div>
</template><script setup lang="ts">
import { ref, onMounted, watch,withDefaults } from 'vue';
import lottie from 'lottie-web';interface Props {animationPath: string;loop?: boolean;autoplay?: boolean;isPlaying?: boolean;
}const props = withDefaults(defineProps<Props>(),{loop: true,autoplay: true,isPlaying: true,
})const lottieContainer = ref<HTMLDivElement | null>(null);
// @ts-ignore
const lottieInstance = ref<lottie.AnimationItem | null>(null);onMounted(() => {if (lottieContainer.value) {fetch(props.animationPath).then(response => {if (!response.ok) {throw new Error(`HTTP error! status: ${response.status}`);}return response.json();}).then(animationData => {lottieInstance.value = lottie.loadAnimation({container: lottieContainer.value as Element,renderer: 'svg',loop: props.loop ?? true,autoplay: props.autoplay ?? true,animationData: animationData,});}).catch(error => {console.error('Error loading Lottie animation:', error);});}
});watch(() => props.isPlaying,(newVal) => {if (lottieInstance.value) {if (newVal) {lottieInstance.value.play();} else {lottieInstance.value.pause();}}}
);
</script>

使用时只需要传入animationPath即可

例如

<LottieAnimation :animationPath="lottieList[getRandomInt()]" />

自动播放循环播放暂停继续

<LottieAnimation :animationPath="lottieList[getRandomInt()]" :loop="true" :autoplay="true" :isPlaying="true"/>

相关文章:

  • 【常见开源库的二次开发】基于openssl的加密与解密——openssl认识与配置(一)
  • C/C++高性能网络库libhv
  • statswrapper.sh 对多个fastq/fasta文件进行基础信息计算
  • Python爬虫速成之路(1):获取网页源代码
  • Qt编程技巧小知识点(1)TCP缓存区数据读取
  • LabVIEW实现LED显示屏视觉检测
  • 相机光学(三十一)——暗房设置的要求
  • Java面试八股之Redis单线程为什么性能高
  • 禁止使用存储过程
  • EE trade:限价建仓是什么意思
  • 合合信息“大模型加速器”亮相2024世界人工智能大会
  • PCIe驱动开发(1)— 开发环境搭建
  • 前端面试39(关于git)
  • javaweb学习day1《HTML篇》--新浪微博(前端页面的创建思路及其HTML、css代码详解)
  • 目标检测基本标注工具-labelImg安装与使用
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • iOS编译提示和导航提示
  • Less 日常用法
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • 彻底搞懂浏览器Event-loop
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • 前端临床手札——文件上传
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 如何优雅的使用vue+Dcloud(Hbuild)开发混合app
  • 通过几道题目学习二叉搜索树
  • 一个SAP顾问在美国的这些年
  • 用mpvue开发微信小程序
  • 再谈express与koa的对比
  • #Datawhale AI夏令营第4期#AIGC文生图方向复盘
  • #laravel 通过手动安装依赖PHPExcel#
  • #QT(一种朴素的计算器实现方法)
  • #每天一道面试题# 什么是MySQL的回表查询
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (佳作)两轮平衡小车(原理图、PCB、程序源码、BOM等)
  • (每日一问)计算机网络:浏览器输入一个地址到跳出网页这个过程中发生了哪些事情?(废话少说版)
  • (三) diretfbrc详解
  • (完整代码)R语言中利用SVM-RFE机器学习算法筛选关键因子
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • (自用)gtest单元测试
  • *(长期更新)软考网络工程师学习笔记——Section 22 无线局域网
  • .bat批处理(一):@echo off
  • .htaccess 强制https 单独排除某个目录
  • .net core 的缓存方案
  • .net core 源码_ASP.NET Core之Identity源码学习
  • .NET Remoting学习笔记(三)信道
  • .net Stream篇(六)
  • .NET/C# 项目如何优雅地设置条件编译符号?
  • /使用匿名内部类来复写Handler当中的handlerMessage()方法
  • @html.ActionLink的几种参数格式
  • @Value读取properties中文乱码解决方案
  • [ Socket学习 ] 第一章:网络基础知识