100%硬核解决前端复杂动画的秘密武器!

这篇具有很好参考价值的文章主要介绍了100%硬核解决前端复杂动画的秘密武器!。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

哈喽!大家好!我是程序视点的小二哥。
前端开发中,总会遇到这样一个困境:动画还原。对于前端开发工程师,有的是这样做的。

  • 照着设计动画模仿,猜测动画时长,手创建贝塞尔曲线……
  • 调整细节耗时耗力,效果还差强人意...
  • 好不容易实现了,还原度却达不到要求

在被UI设计折磨一顿后,小二哥找到了解决这个困境的方案。它就是今天的主角:Lottie

100%硬核解决前端复杂动画的秘密武器!

Lottie简介

Lottie 是Airbnb开源的一个 面向iOS、Android、React Native 的动画库,能分析 AE 导出的动画(需要用bodymovin导出为json格式),并且能让原生 App 像使用静态素材一样使用这些动画,完美实现动画效果。

下面是Lottie提供的官方效果图。类似下面这种一段动画的播放,非常适合使用Lottie来做。
100%硬核解决前端复杂动画的秘密武器!

Lottie流程

我们先来看下整个流程简图。
100%硬核解决前端复杂动画的秘密武器!

设计师用AE把动画效果做出来,再用Bodymovin导出相应地json文件给到前端,前端使用Lottie库就可以实现动画效果。功能简单且强大。

至于Adobe Effect和Bodymovin插件的安装与使用...嗯嗯,这是设计师的事情,咱们就不操心啦。

Lottie使用入门

静态URL引入

<script src="https://cdnjs.cloudflare.com/ajax/libs/lottie-web/5.8.1/lottie.min.js" integrity="sha512-V1YyTKZJrzJNhcKthpNAaohFXBnu5K9j7Qiz6gv1knFuf13TW/3vpgVVhJu9fvbdW8lb5J6czIhD4fWK2iHKXA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>

调用loadAnimation

var params = {
  container: element, // 容器节点
  renderer: 'svg',
  loop: true,
  autoplay: true,
  path: 'data.json' // JSON文件路径
}
var anim = lottie.loadAnimation(params);

vue中使用Lottie

依赖安装和使用

通过NPM安装vue-lottie

npm install --save vue-lottie

vue-lottie使用

<template>
    <div id="app">
        <lottie :options="defaultOptions" :height="400" :width="400" v-on:animCreated="handleAnimation"/>
        <div>
            <p>Speed: x{{animationSpeed}}</p>
            <input type="range" value="1" min="0" max="3" step="0.5"
                   v-on:change="onSpeedChange" v-model="animationSpeed">
        </div>
        <button v-on:click="stop">stop</button>
        <button v-on:click="pause">pause</button>
        <button v-on:click="play">play</button>
    </div>
</template>

<script>
  import Lottie from './lottie.vue';
  import * as animationData from './assets/pinjump.json';

  export default {
    name: 'app',
    components: {
      'lottie': Lottie
    },
    data() {
      return {
        defaultOptions: {animationData: animationData},
        animationSpeed: 1
      }
    },
    methods: {
      handleAnimation: function (anim) {
        this.anim = anim;
      },

      stop: function () {
        this.anim.stop();
      },

      play: function () {
        this.anim.play();
      },

      pause: function () {
        this.anim.pause();
      },

      onSpeedChange: function () {
        this.anim.setSpeed(this.animationSpeed);
      }
    }
  }
</script>

参数配置

也就是上面的defaultOptions属性传递配置对象:

  • container:在其上呈现动画的 dom 元素
  • animationData:一个带有导出动画数据的对象。
  • path:动画对象的相对路径。(animationData 和 path 是互斥的)
  • loop:默认值为true。可传递需要循环的特定次数
  • autoplay:true / false 它会在准备好后立即开始播放
  • name:动画名称以供将来参考
  • renderer: 'svg' / 'canvas' / 'html' 设置渲染器

Lottie动画监听

Lottie提供了用于监听动画执行情况的事件:

  • complete
  • loopComplete
  • enterFrame
  • segmentStart
  • config_ready(初始配置完成)
  • data_ready(所有动画数据加载完成)
  • DOMLoaded(元素已添加到DOM节点)
  • destroy

可使用addEventListener监听事件

// 动画播放完成触发
anm.addEventListener('complete', anmLoaded);

// 当前循环播放完成触发 
anm.addEventListener('loopComplete', anmComplete);

// 播放一帧动画的时候触发 
anm.addEventListener('enterFrame', enterFrame);

Lottie的更多详解,请查阅下方链接。

Lottie 地址:https://github.com/airbnb/lottie-android

Lottie 官网:https://airbnb.design/lottie/

关注同名微信公众号【程序视点】,了解更多有趣、好玩的项目吧~文章来源地址https://www.toymoban.com/news/detail-760016.html

到了这里,关于100%硬核解决前端复杂动画的秘密武器!的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JIRA:项目管理的秘密武器

    在当今动态且快速变化的商业环境中,项目管理已经成为任何组织成功的关键因素。能够有效地管理项目,保证项目在设定的时间和预算内按照预期的质量完成,是每个项目经理的目标。为了实现这个目标,项目经理需要依赖强大的工具,而JIRA就是这样一个工具。 JIRA是Atl

    2024年02月12日
    浏览(49)
  • Protobuf: 高效数据传输的秘密武器

    当涉及到网络通信和数据存储时, 数据序列化 一直都是一个重要的话题;特别是现在很多公司都在推行微服务,数据序列化更是重中之重,通常会选择使用 JSON 作为数据交换格式,且 JSON 已经成为业界的主流。但是 Google 这么大的公司使用的却是一种被称为 Protobuf 的数据交

    2024年02月03日
    浏览(45)
  • 解锁AI语言模型的秘密武器 - 提示工程

    想让你的AI变成聊天高手?掌握提示工程,让你的AI不仅仅是个回答机器,而是你智能的生活小助手! ‍ 首先,你得知道什么是LLMs(大型语言模型),它们是怎么构建的,以及为什么我们需要提示工程。然后,你会学到如何用分隔符来区分数据和提示,怎样要求结构化输出(

    2024年02月06日
    浏览(45)
  • 游戏引擎:打造梦幻游戏世界的秘密武器

    游戏引擎是游戏开发中不可或缺的工具,它为开发者提供了构建游戏世界所需的各种功能和工具。本文将介绍游戏引擎的概念、使用方法以及一个完整的游戏项目示例。 游戏引擎是一种软件框架,它提供了游戏开发所需的各种功能和工具,包括图形渲染、物理模拟、碰撞检测

    2024年02月14日
    浏览(39)
  • 如何使用ChatGPT给出MidJourney提示-【秘密武器】

    探索Midjourney之旅,学习绘画与AI,一同成长。加入「阿杰与AI」公众号,参与内容社群建设。 1.Midjourney 新手快速起步指南 2.Prompts-提示指令 3.Explore Prompting-提示指令的探索 4.Blend-叠加 5.Midjourney Discord的使用手册 6.Versions-版本 7.UpScalers-放大器 8.Midjourney 命令教程 9.Midjourney 参数

    2024年02月10日
    浏览(67)
  • 设计大师的秘密武器:色彩搭配的奇妙技巧

    在设计中,色彩搭配扮演着至关重要的角色。色彩搭配的选择和设计是设计师创作过程中不可或缺的一部分。本文将介绍色彩搭配的重要性,如何设计出令人惊叹的色彩搭配以及色彩对设计师的作用。 色彩卡 | 一个覆盖广泛主题工具的高效在线平台(amd794.com) https://amd794.com/

    2024年01月17日
    浏览(41)
  • 链上数据分析:解读加密生态的秘密武器

    作者:shelly@footprint.network 数据源: Wallet Profile 在加密货币的世界里,信息是力量。但如何获取真实、有价值的数据呢?普通个人投资者浏览 Reddit 帖子或观看 YouTube 视频,并根据基本价格图表做出投资决定。这种方法在牛市中可能行得通,要想长期投资获利,就需要更深入

    2024年01月25日
    浏览(40)
  • ChatGPT: 提升程序员开发效率的秘密武器!

    在现代软件开发中,时间和效率显得尤为重要。程序员们需要在尽可能短的时间内编写高质量的代码,并使之处于状态良好的维护周期。为满足这些需求,人工智能技术逐渐成为软件开发的一项核心能力。ChatGPT作为自然语言生成模型中的佼佼者,为程序员们提供了一个全新的

    2024年02月13日
    浏览(48)
  • 设计模式:程序员的秘密武器(高手必备)

    在过去的几十年的职业生涯中,我观察到许多同事在技术方面取得了显著的进步和能力提升。然而,随着时间的推移,他们似乎逐渐遇到了一个发展的瓶颈。尽管大家都渴望以最快的速度提升自己的技能水平,但他们忽视了一个关键的因素,那就是内功修炼。 是的,我相信大

    2024年02月04日
    浏览(57)
  • 探索Python工具库合集:提高开发效率的秘密武器

    在开发过程中,笔者积累了许多实用的Python工具函数和模块,决定将它们整理成一个工具库集合,并与大家分享。本文将介绍笔者的Python工具库集合的核心功能和用途, 在日常的 Python 开发中,笔者经常遇到一些重复性任务和常见的问题。我开始将常用的Python工具函数记录下

    2024年02月08日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包