首页 > 其他分享 >vite+vue3项目中使用 lottie 动画,如何在 template 中直接使用本地 json 文件路径

vite+vue3项目中使用 lottie 动画,如何在 template 中直接使用本地 json 文件路径

时间:2023-06-19 14:25:53浏览次数:47  
标签:Lottie default props json template vue3 lottie type

安装 lottie-web

yarn add lottie-web 

封装  lottie 组件

<template>
  <div ref="animation" :style="{ width, height }"></div>
</template>

<script>

import { defineComponent, ref, onMounted } from 'vue'

import lottie from 'lottie-web'

export default defineComponent({
  name: 'Lottie',
  props: {
    width: {
      type: String,
      default: '100px',
    },
    height: {
      type: String,
      default: '100px',
    },
    src: {
      type: String,
      default: "",
    },
    jsonData: {
      type: Object,
      default: () => null,
    },
    autoplay: {
      type: Boolean,
      default: true,
    },
    loop: {
      type: Boolean,
      default: true,
    },
  },
  setup(props) {
    let animation = ref(null)

    onMounted(() => {
      if (animation.value) {
        lottie.loadAnimation({
          container: animation.value,
          renderer: "svg",
          loop: props.loop,
          autoplay: props.autoplay,
          path: props.src,
          // animationData只能加载本地json,优先级高于path
          animationData: props.jsonData,
        })
      }
    });

    return {
      animation
    }
  }
})


</script>

<style scoped></style>

全局注册 Lottie 组件

在 main.js 中

import Lottie from "./components/Lottie.vue";


const app = createApp(App) 
app.component("Lottie", Lottie)

在页面中使用(以下在  App.vue )

如果引入的是在线 cdn json 文件,可以直接使用 src,如果使用本地的 json 文件,可以使用 jsonData

<template>
    <div>
           <Lottie width="400px" height="400px" src="https://assets9.lottiefiles.com/packages/lf20_suhe7qtm.json" />
           <Lottie width="400px" height="400px" :jsonData="btn"></Lottie>
</div>
</template>

如果要在 src 中使用本地 json 文件,在 vite 项目中可以通过 import 动态导入 json 文件,并给 json url 路径后面加 "?url",否则会报警告:

runtime-core.esm-bundler.js:6873 [Vue warn]: Invalid prop: type check failed for prop "src". Expected String with value "[object Object]", got Object  
  at <Lottie width="400px" height="400px" src= {v: '5.6.9', fr: 25, ip: 0, op: 50, w: 1000, …} > 
  at <App>
<script setup>
import btn from "./assets/btn.json?url"
</script>

参考文章

参考 vite 官方文档

lottie官方文档

lottie动画资源文档

标签:Lottie,default,props,json,template,vue3,lottie,type
From: https://www.cnblogs.com/beileixinqing/p/17491026.html

相关文章

  • 关于ASP.NET.CORE中的Failed to read parameter "string param" from the request bod
    先上报错信息Microsoft.AspNetCore.Http.BadHttpRequestException:Failedtoreadparameter"stringparam"fromtherequestbodyasJSON.--->System.Text.Json.JsonException:'s'isaninvalidstartofavalue.Path:$|LineNumber:0|By......
  • template - function parameter - type
    #include<iostream>#include<thread>#include<array>#include<functional>template<autofunc,std::size_tI>structparam_type;template<typenameRet,typename...Args,Ret(*func)(Args...),std::size_tI>struct......
  • 关于前后端JSON解析差异问题与思考
    本文主要总结了作者在一次涉及流程表单的需求发布中遇到的问题及思考总结。 一、问题回顾在一次涉及流程表单的需求发布时,由于表单设计的改动,需要在历史工单中的一个json字段增加一个属性,效果示意如下:[{"key1":"value1"}]->[{"key1":"value1","key2":"value2"}]......
  • 关于前后端JSON解析差异问题与思考
    本文主要总结了作者在一次涉及流程表单的需求发布中遇到的问题及思考总结。 一、问题回顾在一次涉及流程表单的需求发布时,由于表单设计的改动,需要在历史工单中的一个json字段增加一个属性,效果示意如下:[{"key1":"value1"}]->[{"key1":"value1","key2":"value2"}]......
  • Vue3 - 实现文本复制粘贴功能
    1.安装库并导入npmivue-clipboard3--save2.在需要的前端文件中导入importclipboard3from'vue-clipboard3'html结构如下<template><divclass="hello"><inputtype="text"v-model="text"><button@cli......
  • Delphi 用TDatasetToJSONBridge原生支持DataSet导出Json
    Xalion发现data.DBJson单元,不知什么时候加的,官方帮助中也没有写。procedureTForm18.Button2Click(Sender:TObject);varcV:TDatasetToJSONBridge;jo:Tjsonobject;begincV:=TDatasetToJSONBridge.Create;trycV.Dataset:=mt;jo:=Tjsonobject(cV.Pro......
  • Spring — JdbcTemplate
    Spring—JdbcTemplateJdbcTemplate做持久层的操作导入包aop、ccbe(四核心)、spring-jdbc、c3p0、mysql-connector-java配置数据源编写数据库配置文件db.properties(driver、url、user、pwd)mysql5:Class.forName("com.mysql.jdbc.Driver");Stringurl="......
  • 一文看完Vue3的渲染过程
    Vue3官网中有下面这样一张图,基本展现出了Vue3的渲染原理:本文会从源码角度来草率的看一下Vue3的运行全流程,旨在加深对上图的理解,从下面这个很简单的使用示例开始:import{createApp,ref}from"vue";createApp({template:`<divclass="card"><butt......
  • 【React工作记录一百一十二】React(Hook)+TS+axios+ant design+json server实现todoli
    前言大家好我是歌谣最近开始在做关于前端扫盲的一些只是处理花了一周左右录制了了一个hook写法的关于todoList的视频主要用于基础知识的一个使用和处理目录#前端巅峰人才交流群私信我#第一节创建项目todolist项目技术选型React(Hook)+TS+axios+antdesign+jsonserve......
  • Weekly Report Template Duplicator - 周报模板复制器
    下面是周报模板复制/生成器代码:##WeeklyReportGenerator####ByAlexanderEzharjan#####Configs###template_file='template.docx'week_start=(2023,6,19)week_end=(2023,6,25)fin_date_tag="number:YOUR_STAFF_ID)"#落款时间标记########......