一,安装vue-lottie

1 npm install --save vue-lottie

二,引用vue-lottie

在main.js引入并全局注册组件也可在页面单独引用

1 import lottie from 'vue-lottie';
2 Vue.component('lottie', lottie)

三,引入Lottie动画资源

 1  一,script中引入资源
2 import * as animationData from "../../public/data/data.json";
3
4 二,data里面添加相应属性
5 defaultOptions: { animationData: animationData.default }
6
7 三,template里使用Lottie组件
8 <lottie :options="defaultOptions" :height="400" :width="400" v-on:animCreated="handleAnimation" />
9
10 四,定义方法
11 //说明:lottie初始化时,需要指定一个options配置项,因为lottie是没有宽高的,所以宽高必须设置,animCreated方法用于创建lottie动画,它的方法返回一个anim对象,里面包含这个动画的所有属性。我们可以根据它返回的这个对象,来对lottie动画做一系列的控制
12 handleAnimation: function(anim) {
13 this.anim = anim;
14 console.log(anim); //这里可以看到 lottie 对象的全部属性
15 }

说明:关于json文件中引入图片路径的问题,在vue-cli 3.0版本以上 static 文件夹 由 public 文件夹代替,static/public 文件夹打包是不经过编译的,也就是说 我将 data.json 放在 public/data 里,将动画图片放在 public/images 里,在打包之后的 dist 文件夹里会直接生成 data和images文件夹,那么json文件引入图片路径在打包编译之前和之后都是一样的 "../images/"

注释:lottie的参数options说明

1 container: element, //要包含该动画的dom元素
2 renderer: 'svg', //渲染方式,svg、canvas、html(轻量版仅svg渲染)
3 loop: true, //是否循环播放,true表示循环,false表示不循环
4 autoplay: true, //是否自动播放,true表示自动播放
5 animationData: animationData, //需要引入的json动画对象

可调用方法:

 1 Anim.play(); // 播放该动画,从目前停止的帧开始播放
2 Anim.stop(); // 停止播放该动画,回到第0帧
3 Anim.pause(); // 暂停该动画,在当前帧停止并保持
4
5 Anim.goToAndStop(value, isFrame); // 跳到某个时刻/帧并停止。isFrame(默认false)指示value表示帧还是时间(毫秒)
6 Anim.goToAndPlay(value, isFrame); // 跳到某个时刻/帧并从该帧往后进行播放
7 Anim.goToAndStop(30, true); // 跳转到第30帧并停止
8 Anim.goToAndPlay(300); // 跳转到第300毫秒并从300毫秒开始向后播放
9
10 Anim.playSegments(arr, forceFlag); // 播放片段,arr可以包含两个数字或者两个数字组成的数组,forceFlag表示是否立即强制播放该片段,如果是false则需等前一个动画结束后开始播放,如果是true,则立即开始播放
11 Anim.playSegments([10,20], false); // 播放完之前的片段,播放10-20帧
12 Anim.playSegments([[0,5],[10,18]], true); // 直接播放0-5帧和10-18帧
13
14 Anim.setSpeed(speed); // 设置播放速度,speed为1表示正常速度
15 Anim.setDirection(direction); // 设置播放方向,1表示正向播放,-1表示反向播放
16 Anim.destroy(); // 删除该动画,移除相应的元素标签等。在unmount的时候,需要调用该方法

lottie常用监听方法,我们可以在mounted时为动画添加监听器

1 Anim.addEventListener('data_ready', () => {
2 console.log('animation data has loaded');
3 });

其他监听事件:

1 complete: 播放完成后触发(循环播放下不会触发)
2 loopComplete: 当前循环下播放(循环播放/非循环播放)结束时触发
3 enterFrame: 每进入一帧就会触发,播放时每一帧都会触发一次,stop方法也会触发
4 segmentStart: 播放指定片段开始时触发,playSegments、resetSegments等方法刚开始播放指定片段时会发出,如果playSegments播放多个片段,多个片段最开始都会触发。
5 data_ready: 动画json文件加载完毕触发
6 DOMLoaded: 动画相关的dom已经被添加到html后触发
7 destroy: 将在动画删除时触发

vue项目中使用lottie动画的更多相关文章

  1. vue项目中遇到的一些问题

    或访问:https://github.com/littleHiuman/experiences-about-vue  欢迎补充! vuex 状态 vue-cli 命令行 vue vue vue-rou ...

  2. 如何在Vue项目中给路由跳转加上进度条

    1.前言 在平常浏览网页时,我们会注意到在有的网站中,当点击页面中的链接进行路由跳转时,页面顶部会有一个进度条,用来标示页面跳转的进度(如下图所示).虽然实际用处不大,但是对用户来说,有个进度条会大大 ...

  3. vue项目中引入循环执行setInterval或者requestAnimationFrame的用法等

    项目中循环计时处理某些方法的情况还是比较常见的,一般会用setInterval来处理,但是这个方法会似的页面卡顿等使用体验不好. 所以就使用浏览器提供的requestAnimationFrame方法, ...

  4. vue 项目中实用的小技巧

    # 在Vue 项目中引入Bootstrap 有时在vue项目中会根据需求引入Bootstrap,而Bootstrap又是依赖于jQuery的,在使用npm按照时,可能会出现一系列的错误 1.安装jQu ...

  5. 如何在VUE项目中添加ESLint

    如何在VUE项目中添加ESLint 1. 首先在项目的根目录下 新建 .eslintrc.js文件,其配置规则可以如下:(自己小整理了一份),所有的代码如下: // https://eslint.or ...

  6. 在vue项目中, mock数据

    1. 在根目录下创建 test 目录, 用来存放模拟的 json 数据, 在 test 目录下创建模拟的数据 data.json 文件 2.在build目录下的 dev-server.js的文件作如下 ...

  7. 浅谈 Axios 在 Vue 项目中的使用

    介绍 Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中. 特性 它主要有如下特性: 浏览器端发起XMLHttpRequests请求 Node端发起http ...

  8. 去除vue项目中的#及其ie9兼容性

    一.如何去除vue项目中访问地址的# vue2中在路由配置中添加mode(vue-cli创建的项目在src/router/index.js) export default new Router({ m ...

  9. vue 项目中当访问路由不存在的时候默认访问404页面

    前言: 在Vue项目中,当访问的页面路由不存在或错误时,页面显示为一片空白.然而,通常我们需要对访问url不存在或者错误的情况下添加默认的404页面,即not found页面. 一般的处理方法是: 在 ...

  10. vue项目中遇到的那些事。

    前言 有好几天没更新文章了.这段实际忙着做了一个vue的项目,从 19 天前开始,到今天刚好 20 天,独立完成. 做vue项目做这个项目一方面能为工作做一些准备,一方面也精进一下技术. 技术栈:vu ...

随机推荐

  1. c# datagridview列宽自适应设置

  2. Edge 访问网站强制HTTPS

    edge://net-internals/#hsts 1)開啟Edge chromium 瀏覽器,輸入edge://net-internals/#hsts,開啟設定介面2)找到 Delete doma ...

  3. SqlServer提示对象名无效

    执行脚本 exec sp_msforeachtable "sp_changeobjectowner '?','dbo'"

  4. CH573 CH579 CH582程序烧录讲解

    WCH的蓝牙芯片CH57x/CH58x系类大部分是支持串口烧录.USB烧录和LINK烧录的,除了一些特殊的封装,如571K,它引脚较少,只支持串口免按键烧录. 仿真下载:ARM内核的CH579支持Jl ...

  5. Django数据迁移介绍

    1.简介 迁移是 Django 将你对模型的修改(例如增加一个字段,删除一个模型)应用至数据库表结构对方式 2.基本命令 python manage.py migrate---负责应用和撤销迁移 py ...

  6. keshe第三周

    本周尝试在openeuler中运行java代码 实现bc库和crypto.gmsm 如下: 实现gmlib C语言库

  7. WSL安装Ubuntu 22.04 (2)

    1.安装系统环境 1.1.设置软件包源为国内镜像 参考:Ubuntu更换国内镜像源 - 知乎 1.2.更新系统软件包 sudo apt-get update && sudo apt-g ...

  8. Postgresql 或GreenPlum 查询结果部分字段转json格式并保留字段名(row_to_json)

    -- 一些搜索结果给出 部分字段转json保留原字段的方式是用子查询select row_to_json(t) from ( select id, text from words ) t 但是如果子查 ...

  9. python selenium 操作文件上传,并发操作时,文件选择窗口混乱解决方案

    上传文件 使用的是 python + autoit 模块,这种方式有一个问题,当出现多条任务同时选择文件上传的时候,无法判断那个文件选择窗口的归属,从而出现上传了错误的文件! 解决方法: 要上载文件而 ...

  10. VUE配置proxy代理、开发环境、测试环境、生产环境

    VUE配置proxy代理.开发环境.测试环境.生产环境 前端开发过程中,我们经常会碰到跨域的问题,下面我们来配置下,不同的环境下,统一的跨域问题解决. 1.根目录下新建三个环境的配置文件,.env.d ...