前端动画实现 —— lottie

avatar

前端动画实现 —— lottie

前端常用动效实现方式

CSS3 帧动画

CSS 发展到了今天,它的强大几乎不是我们可以想想到的。合理的使用Animation可以实现很多神奇效果。配合设计师的导出图,前端使用序列帧即可实现动画效果。

帧动画的缺点和局限性比较明显,导出图文件大,且在不同屏幕分辨率下可能会失真。

JS

通过JS方法控制DOM,从而实现动画效果

GIF

最常用

canvas/svg

js + canvas/svg 应该是目前前端实现复杂动效的最优方案了,但要注意canvas和svg二者之间区别,根据不同使用场景选取最优的实现方案。

SVG

SVG 是一种使用 XML 描述 2D 图形的语言。

SVG 基于 XML,这意味着 SVG DOM 中的每个元素都是可用的。您可以为某个元素附加 JavaScript 事件处理器。

在 SVG 中,每个被绘制的图形均被视为对象。如果 SVG 对象的属性发生变化,那么浏览器能够自动重现图形。

Canvas

Canvas 通过 JavaScript 来绘制 2D 图形。

Canvas 是逐像素进行渲染的。

在 canvas 中,一旦图形被绘制完成,它就不会继续得到浏览器的关注。如果其位置发生变化,那么整个场景也需要重新绘制,包括任何或许已被图形覆盖的对象。

主要区别如下:

Canvas

1.依赖分辨率

2.不支持事件处理器

3.弱的文本渲染能力

4.能够以 .png 或 .jpg 格式保存结果图像

5.最适合图像密集型的游戏,其中的许多对象会被频繁重绘

SVG

1.不依赖分辨率

2.支持事件处理器

3.最适合带有大型渲染区域的应用程序(比如谷歌地图)

4.复杂度高会减慢渲染速度(任何过度使用 DOM 的应用都不快)

5.不适合游戏应用

Lottie

Lottie一个适用于Web,Android,iOS,React Native和Windows 的移动库,它可以使用Bodymovin解析以json 格式导出的Adobe After Effects动画,并在移动设备上进行本地渲染!

所有这些动画都是在After Effects中创建的,使用Bodymovin导出,并在本机渲染,无需额外的工程工作。 Bodymovin是由Hernan Torrisi创建的After Effects插件,它将After Effects文件导出为json并包含一个javascript网络播放器。我们建立在他的伟大工作之上,将其用途扩展到Android,iOS,React Native和Windows。(都是UI的工作,前端不需要管)

lottie-web

安装

install.jpg

API 介绍

api.jpg

Lottie-web 常用方法

methods.jpg

Lottie-web 常用的事件

data_ready:动画数据加载完毕

event.jpg

config_ready:完成初始配置后

data_failed:当无法加载动画的一部分时

loaded_images:当所有图像加载成功或错误时

DOMLoaded:将元素添加到DOM时

简单的代码示例

example.jpg

lottie-vue

安装

lottie-vue-install.jpg

引入

import.jpg

使用

use.jpg