lottie库动画方案

2023-05-16

什么是lottie

Lottie是一个库,可以解析使用AE制作的动画(需要用bodymovin导出为json格式),支持web、ios、android和react native。在web侧,lottie-web库可以解析导出的动画json文件,并将其以svg或者canvas的方式将动画绘制到我们页面中。

优点

  • 动画由设计使用专业的动画制作工具Adobe After Effects来实现,使动画实现更加方便,动画效果也更好;
  • 前端可以方便的调用动画,并对动画进行控制,减少前端动画工作量;
  • 设计制作动画,前端展现动画,专业人做专业事,分工合理;
  • 卖家秀即买家秀,还原程度百分之百;
  • 使用lottie方案,json文件大小会比gif文件小很多,性能也会更好。

不足

  • lottie-web文件本身仍然比较大,lottie.js大小为513k,轻量版压缩后也有144k,经过gzip后,大小为39k。所以,需要注意lottie-web的加载。目前H5项目有离线包,PC项目也会上PWA,会对其进行缓存,保证加载速度。
  • lottie动画其实可以理解为svg动画/canvas动画,不能给已存在的html添加动画效果;
  • 动画json文件的导出,目前是将AE里面的参数一一导出成json内容,如果设计师建了很多的图层,可能仍然有json文件比较大(20kb)的问题。需要设计师遵循一定的规范。
  • 有很少量的AE动画效果,lottie无法实现,有些是因为性能问题,有些是没有做。比如:描边动画等。

lottie-web使用方式

npm包

npm install lottie-web --save

import lottie from 'lottie-web'
import lottieJson from "@/static/lottie/lottieJson.json";

initLottie() {
    const box = document.getElementById("lottie_box");
    lottie.loadAnimation({
    container: box, // 包含动画的dom元素
    renderer: "canvas", // 渲染出来的是什么格式
    loop: true, // 循环播放
    autoplay: true, // 自动播放
    animationData: lottieJson, // 动画json的路径
      });
    },

功能简介

lottie-web提供了很多操控动画的方法。下面是几种常用的方法,基本可以满足对动画进行控制的需求。

play: 播放动画
stop: 停止播放动画
pause: 暂停动画
goToAndStop: 跳到某一帧动画,并停止
setDirection: 设置播放方向
setSpeed: 设置播放速度
此外,lottie-web也提供了一系列的事件,例如:

onComplete: 动画播放完成触发
onLoopComplete: 当前循环播放完成触发
onEnterFrame: 播放一帧动画的时候触发
onSegmentStart: 开始播放一个动画片段的时候触发

原理简介

在Adobe After Effects中,动画是由一个一个的图层组成的,在相应的图层上面添加一些变换(例如:缩放、移动等),这变成为了动画。下面是一个AE图层截图:



例如,“右眼 眨”便是一个图层,里面包含内容(图层形状等)和变换。将该动画通过bodymovin插件导出的json,会如以下格式:

{
    "fr": 30, // 帧率
    "ip": 0, // 起始关键帧
    "op": 20, // 结束关键帧
    "w": 150, // 视图宽
    "h": 130, // 视图高
    "assets": [], // 资源集合 
    "layers": [{ // 图层
        "ty": 0, // 图层类型。
        "refId": "comp_0", // 引用的资源,图片/预合成层
        "ks": {}, // 变换。对应AE中的变换设置,下面有详细介绍
        layer: [], // 该图层包含的子图层
        shapes: [], // 形状图层
        "w": 1334,
        "h": 750,
        "bm": 0
    }], // 图层集合
    "masker": [] // 蒙层集合
}
动画的json文件中,主要内容是layers,对应AE中的一个个图层。每个图层里面包含内容(shapes)、变换(ks)、子图层(layers),与AE中图层是一一对应的。

在lottie-web中,会根据上面的json,进行相应的渲染处理。例如:

shapes中会有各种形状,lottie-web会根据其参数,渲染出相应的svg标签;
ks中会有变换参数,lottie-web会将其转换成相应的trasform属性,添加到对应svg标签上;
ks的变换参数可能随时间变换,lottie-web会根据参数,调用window.requestAnimationFrame方法,对transform属性进行动态更新,实现动画。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

lottie库动画方案 的相关文章

  • windows的BAT或者linux的VI下批量更改替换文件名的脚本

    windows 的BAT 或者linux 的VI 下批量更改替换文件名的脚本 本来离开写脚本有些日子了 xff0c 倒是现在有些文件处理或者EXCEL 工作簿要处理的话 xff0c 还是会用简化流程来处理 脚本函数则帮我解决了很多麻烦事 昨
  • 室内定位技术及机场方案建议

    室内定位技术发展现状 在1996年左右 xff0c 美国联邦通信委员会 xff08 FCC xff09 要求移动运营商为移动电话用户提供E 911 xff08 紧急救援 xff09 服务 1999年 xff0c FCC又对定位精度做出新的要
  • 如何让ActiveXObject( "Microsoft.XmlDom ")对象在非IE浏览器下显示数据?firefox(火狐)

    在IE浏览器下 xff0c xmlDom对象一般这样被定义 xff1a var xmlDom 61 new ActiveXObject 34 Microsoft XMLDOM 34 为了兼容Firefox xff0c 需要修改为 xff1a
  • 【easyui学习笔记】4.动态添加标签页

    参考 xff1a EasyUI 动态添加标签页 xff08 Tabs xff09 1 静态添加标签页 xff08 tabs xff09 静态添加标签页十分简单 xff0c 使用class属性为easyui tabs的div即可 xff0c
  • BIM+GIS建设与运维管理工作建议

    背景 xff1a BIM 43 GIS项目的建设意见 xff0c 就弱电的建设和运维方向提出相关需求 xff1b 在BIM模型建设时期 xff0c 面向弱电专业的建设建议 参考行业规范 xff1a 在机场工程项目的建设阶段 xff0c 各参
  • 修改svn默认端口

    Subversion有两种不同的配置方式 xff0c 一种基于它自带的轻量级服务器svnserve xff0c 一种基于非常流行的Web服务器Apache 根据不同的配置方式 xff0c Subversion使用不同的端口对外提供服务 基于
  • 项目、系统开发中的需求分析说明书和需求规格说明书的区别

    项目组成员在针对要开发的系统做需求调研后 xff0c 就要编写对应的需求说明书 作为软件工程师 xff0c 你就得知道需求分析说明书和需求规格说明书的区别 xff0c 以期在正确的时候编写正确的需求文档 两者有何不同 xff1a xff08
  • C/C++内存管理详解[转载]

    我觉得这是一篇很不错的文章 xff0c 对C和C 43 43 的程序员来说 xff0c 很有实用价值 xff0c 故推荐给大家 作者 xff1a PingPong 文档来源 xff1a CSDN 伟大的Bill Gates 曾经失言 xff
  • 项目启动会应该注意的几点

    摘要 xff1a 开个好头 xff0c 万事不难 项目启动会作为项目建设生命周期的开始 xff0c 其意义和难度不言而喻 作为项目管理办公室的负责人 xff0c 需要特别重视项目启动会的召开 xff0c 杜绝走过场 xff0c 避免虽然知道
  • 飞机的航班代码/航班号码的编号规则

    以下内容来源于网络 xff0c 并整理而得 一 国内航班 中国国内航班号的编号规则 xff1a 航空公司的两字代码 43 4位数字 其中 xff0c 后面四位数字的第一位代表航空公司的基地所在地区 第二位代表航班基地外终点所在地区 xff0
  • 机场生产运行数据统计指标-第四篇-机场运行保障类

    机场运行保障类 1 民航航班正常统计 1 1 统计说明 xff08 1 xff09 统计范围的相关说明 xff1a 1 民航航班正常统计范围 xff1a 国内外运输航空公司执行的客货运航班 xff0c 包括正班 加班 包机 港澳台地区及国际
  • Python入门学习--环境配置

    工作将近两年了 xff0c 做过B S结构的项目 xff0c 也做过android xff0c 也做过C S结构的项目 xff0c 相信无论是那种项目都是基于Java 学习运用Java也已经好多年了 xff0c 虽然也接触过C C 43 4
  • Python入门学习-数据类型

    一 类型的概念 首先 xff0c 对于一个数据1011100 xff0c 改怎么解释呢 xff1f 同Java等变成语言类型 xff0c 首先我们要明确数据的类型 xff0c 程序设计语言不允许语法歧义 xff0c 因此需要明确数据的类型
  • 流年似水 启航2019

    凌晨1点无意间看到一个演讲视频 感谢你给我机会上场 xff0c 很久之前的一个演讲视频 xff0c 看完除了羡慕还是羡慕吧 xff0c 也许就是一句话吧 xff0c 开挂的人生不需要解释 30多年的生活他做了很多事 xff0c 也做成了很多
  • 使用Python代码下载网易音乐歌曲

    刚刚写了一堆 xff0c 最终放弃了 xff0c 后来百度查找到一个接口 xff0c http music 163 com song media outer url id 61 这里填歌曲id mp3 这个URL就可以下载了 xff0c 现
  • Spring是如何管理Bean

    常常听老师说容器 xff0c 容器是什么 xff1f spring中是如何体现的 xff1f 一直有疑惑 xff0c 这两天看了一下Spring管理bean的Demo xff0c 对于Spring中的容器有了简单的认识 我们知道 xff0c
  • Python如何用TKinter搭建图形界面窗口,并通过多进程的方式调用功能函数

    用Python开发图形界面和程序时 xff0c 经常会对图形界面的搭建感到失望 xff0c 或许是由于对图形界面不熟悉的原因吧 xff0c 总之一想到图形界面 xff0c 就感觉会很费时 费力 xff0c 编程的积极性大幅下降 最近 xff
  • 巧用 Matplotlib 动画,让你的 Python 可视化大放异彩

    柠檬2069 点击右侧关注 xff0c 遇见更好的自己 xff01 巧用 Matplotlib 动画 让你的 Pyt
  • ubuntu里设置从串口登录

    1 Create a file called etc init ttyS0 conf containing the following ttyS0 getty This service maintains a getty on ttyS0
  • Linux proc目录详解

    目录 1 什么是proc 2 proc目录介绍 2 1 proc cpuinifo CPU的信息 型号 家族 缓存大小等 2 2 proc meminfo物理内存 交换空间 2 3 proc mounts 已加载的文件系统的列表 2 4 p

随机推荐

  • Linux 系统守护进程管理 --(start-stop-daemon)

    目录 一 功能 二 格式 2 1 搜索匹配的过程 2 2选项 2 2 1匹配选项 2 2 2只对 start有效的选项 2 2 3只对 停止有效的选项 2 2 4其他选项 三 应用 3 1 启动进程 3 1 1 强制启动 3 1 2 默认启
  • linux kill -9 杀不掉的进程

    kill 9 发送SIGKILL信号给进程 xff0c 将其终止 xff0c 但对于以下两种情况不适用 1 该进程是僵尸进程 xff08 STAT z xff09 xff0c 此时进程已经释放所有的资源 xff0c 但是没有被父进程释放 僵
  • 划分子网例题详解

    划分子网例题详解 网络基础考试题目 1 xff0c 假设取得网络地址200 200 200 0 xff0c 子网掩码为255 255 255 0 现在一个子网有100台主机 xff0c 另外4个子网有20台主机 xff0c 请问如何划分子网
  • ssh无秘钥登录报错sign_and_send_pubkey: signing failed: agent refused operation

    ssh连接远程主机时 xff0c 出现 sign and send pubkey signing failed agent refused operation 错误 xff0c 并且还是需要输入密码 表示ssh agent 已经在运行了 x
  • Linux开启路由转发功能

    标记一下 xff0c 今天想让一台Red Hat Enterprise Linux 7开通iptables的nat转发功能 xff0c 找了半天 A服务器 xff1a 192 168 30 20 24 B服务器 xff1a 192 168
  • E: Some index files failed to download. They have been ignored, or old ones used instead.解决方案

    1 删除 var lib apt lists 所有文件 sudo rm var lib apt lists vf 有文件夹不能删除的话使用 sudo rm rf var lib apt lists sudo rm var lib apt l
  • Microsoft Windows Vista

    Microsoft Windows Vista是微软Windows操作系统的最新版本 xff0c 于2005年7月22日微软正式公布了这一名字 原代号为Longhorn Windows Vista的内部版本是6 0 xff08 即Windo
  • tcp retransmission原因

    TCP协议是一个可靠的协议 它通过重新发送 retransmission 来实现TCP片段传输的可靠性 简单的说 xff0c TCP会不断重复发送TCP片段 xff0c 直到片段被正确接收 TCP片段丢失 TCP头部的checksum 接收
  • 数据库死锁原因及解决办法

    死锁 xff08 Deadlock xff09 所谓死锁 xff1a 是指两个或两个以上的进程在执行过程中 xff0c 因争夺资源而造成的一种互相等待的现象 xff0c 若无外力作用 xff0c 它们都将无法推进下去 此时称系统处于死锁状态
  • spring和springmvc父子容器的关系

    大家都知道 xff0c 在spring的配置中要分开配置service层的注解扫描 xff0c 以及springmvc变现层的注解扫描 xff0c 如下 xff1a lt 扫描加载Service实现类 gt lt context compo
  • pageHelper分页插件实现原理及使用方法

    插件官方网站 xff1a https github com pagehelper Mybatis PageHelper tree master src main java com github pagehelper 实现原理 xff1a 使
  • 虚拟机Linux系统安装nginx服务器并启动的步骤

    工作前的准备 xff1a 1 装有Linux的虚拟机 2 nginx安装包 xff0c 注意是gz结尾的压缩文件 具体步骤1 xff1a 1 nginx安装环境 nginx是 C 语言开发 xff0c 建议在 linux 上运行 xff0c
  • 什么是反射机制,有什么作用

    1 反射机制定义 反射的概念是由Smith在1982年首次提出的 xff0c 主要是指程序可以访问 检测和修改其本身状态或行为的一种能力 在Java环境中 xff0c 反射机制允许程序在执行时获取某个类自身的定义信息 xff0c 例如熟悉和
  • 模块化建立项目流程(Maven聚合模块)

    先说项目使用Maven的好处 1 项目构建 Maven定义了软件开发的整套流程体系 xff0c 并进行了封装 xff0c 开发人员只需要指定项目的构建流程 xff0c 无需针对每个流程编写自己的构建脚本 2 依赖管理 除了项目构建 xff0
  • 如何在linux下判断web服务是否开启?

    对于web服务的开启的判断有以下几种常用方法 xff1a 1 端口查看 xff1a 本地 xff1a ss xff0c netstat xff0c lsof 1 2 3 4 5 6 7 8 9 10
  • git基本命令

    最近再写一些项目上传到github xff0c 所以要用到git命令 本地需要先安装git客户端 xff0c 然后指定一个git地址为本地仓库 然后右键git bash here打开git命令界面 首先服务端需要创建一个项目以便clone到
  • jps查看Java线程,jstack查看具体线程堆状态

    想要使用jps需要配置环境变量 xff0c 在classpath后在加一个指定Java bin目录 具体命令如下 t2挂起了 xff0c 堆里面显示t2为RUNNABLE xff0c suspend xff0c resume废弃使用 IBM
  • python之ssh连接

    paramiko是用python语言写的一个模块 xff0c 遵循SSH2协议 xff0c 支持以加密和认证的方式 xff0c 进行远程服务器的连接 跟常用软件xshell xftp功能一样 xff0c 但是可以连接多台服务器 xff0c
  • 记录一个类加载变量引发的问题

    类加载变量导致的问题 类加载变量导致的问题 类加载变量导致的问题 因为项目需要 xff0c 银行要求使用weblogic部署并且启动所有项目 xff0c 不允许项目单独开服务启动一般都有这样的要求 xff0c 我所在的项目组有两个单独mai
  • lottie库动画方案

    什么是lottie Lottie是一个库 xff0c 可以解析使用AE制作的动画 xff08 需要用bodymovin导出为json格式 xff09 xff0c 支持web ios android和react native 在web侧 xf