Vue-lottie 簡介及應用

一、什麼是Vue-lottie

Vue-lottie 是一種在Vue應用程序中使用 LottieWeb動畫的簡便方法。Lottie是一個以JSON格式呈現Adobe After Effects動畫的開源JavaScript庫,具有在多個平台上呈現高質量矢量動畫的能力。Vue-lottie是利用Lottie實現在 Vue.js 中呈現複雜動畫的插件,帶來了非常不錯的用戶體驗。

二、vue-lottie 的應用

Vue-lottie 是在Vue項目中引用的, 要使用 vue-lottie 需要用到以下幾步:

1.使用 Vue CLI創建Vue工程項目

vue init webpack vue-lottie-demo

2.通過 npm 在項目中安裝 vue-lottie 插件

npm install vue-lottie --save

3.引入 Vue-lottie 到項目中

import Vue from 'vue'
import App from './App.vue'
import LottieAnimation from 'vue-lottie';
Vue.component('LottieAnimation', LottieAnimation)
new Vue({
  el: '#app',
  render: h => h(App)
})

4.將JSON格式的Lottie 動畫導入到項目中

在項目src目錄下創建資源文件夾 assets,將JSON格式的Lottie動畫文件放到 assets 文件夾中。動畫文件可以從 Lottie官方網站 中獲取。

5.在Vue組件中使用Vue-lottie組件

在組件中使用 Vue-lottie 組件,並將導入的JSON格式的Lottie動畫文件路徑作為屬性傳遞給組件,就可以在頁面上看到該動畫了。

<lottie-animation
  :animation-path="require('./../assets/animation.json')"
  :speed="1"
  :loop="true"
  :autoplay="true"
/>

三、vue-lottie 的實例

下面通過一個實例來說明 vue-lottie 如何使用。實例需求:我們需要在添加某一產品成功之後,彈出一個懸浮層,在其中添加一個從左向右飛行的小鳥動畫,體現添加產品成功後的喜悅。

1. 在Vue組件中使用 Vue-lottie 組件

在 Vue 組件中引入 Vue-lottie 組件,並將導入的 JSON 格式的 Lottie 動畫文件作為屬性傳遞給組件,如下所示:

<template>
  <div class="page">
    <div class="alert" v-show="alert.status">
      <h4>增加產品功能</h4>
       <lottie-animation 
        :animation-path="lottie"
        :speed="1"
        :loop="true"
        :autoplay="true"
        :style="{width: '100%'}"
        className="logo"
      />
    </div>
    ...

</template>

<script>
  import LottieAnimation from 'vue-lottie';
  import successAnimation from '@/assets/json/success.json';
  export default {
    data() {
      return {
        lottie: successAnimation,
      };
    },
    components: {
      LottieAnimation,
    },
  };
</script>

2、在用戶添加產品成功之後顯示動畫

當用戶添加產品成功後,我們可以通過一個 alert 組件來顯示動畫效果,如下所示:

<template>
  <form class="form-horizontal">
    <div class="form-group has-feedback">
      ...
    </div>
    <button type="submit" @click="add" class="btn btn-primary">添加產品&nbsp;&nbsp;&nbsp;&nbsp;</button>
  </form>
  <div class="alert" v-show="alert.status">
    <h4>增加產品功能</h4>
    <lottie-animation 
      :animation-path="lottie"
      :speed="1"
      :loop="true"
      :autoplay="true"
      :style="{width: '100%'}"
      className="logo"
    />
  </div>
</template>

<script>
  import LottieAnimation from 'vue-lottie';
  import successAnimation from '@/assets/json/success.json';
  export default {
    data() {
      return {
        alert: {
          status: false,
        },
        name: '',
        lottie: successAnimation,
      };
    },
    methods: {
      add() {
        this.alert.status = true;
      }
    },
    components: {
      LottieAnimation,
    },
  };
</script>

上述代碼實現該過渡效果,效果如下:

![lottie](https://user-images.githubusercontent.com/82015655/126780087-01a365eb-f6ec-4d6a-a388-274f7cb5f7fb.gif)

四、vue-lottie的插件API:

除了上述使用方式外,vue-lottie 還提供了一些API,可以幫助我們更好的進行開發。

1. animate()

該方法提供了從外部控制Lottie動畫的能力:停止,開始,暫停,重置,seak,在我們的組件中可以根據用戶的交互事件來觸發相應的方法呈現相應的動畫。

<template>
  <div>
    <lottie-animation 
      ref="lottieAnimation"
      :animation-path="require('@/assets/animation.json')"
      :speed="1"
      :loop="true"
      :autoplay="false"
      :style="{width: '100%'}"
      className="logo"
    />
    <button @click="play">Play</button>
    <button @click="stop">stop</button>
    <button @click="pause">pause</button>
  </div>
</template>

<script>
  import LottieAnimation from 'vue-lottie';
  export default {
    methods: {
      play() {
        this.$refs.lottieAnimation.animation.play();
      },
      stop() {
        this.$refs.lottieAnimation.animation.stop();
      },
      pause() {
        this.$refs.lottieAnimation.animation.pause();
      },
    },
    components: {
      LottieAnimation,
    },
  };
</script>

2. addEventListener()

該方法提供了用來處理每個與Lottie動畫相關的事件的能力,預設了三個事件參數:complete, loopComplete 和 enterFrame。例如:監聽動畫的播放完成事件

<lottie-animation 
  ref="lottieAnimation"
  :animation-path="require('@/assets/animation.json')"
  :speed="1"
  :loop="false"
  :autoplay="false"
  :style="{width: '100%'}"
  className="logo"
/>

<script>
  import LottieAnimation from 'vue-lottie';
  export default {
    mounted() {
      this.$refs.lottieAnimation.animation.addEventListener('complete', () => {
        console.log('動畫播放完成');
      });
    },
    components: {
      LottieAnimation,
    },
  };
</script>

總結

通過vue-lottie我們可以輕鬆集成Adobe After Effects的矢量動畫,讓動畫變得更加簡單、快捷,同時也可以通過API方法來實現一些動畫的控制功能,相比較於其他的播放插件更具有靈活性和適用性。在實際的開發中,我們可以結合項目的實際需求,對動畫進行更進一步的優化。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/296149.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-27 12:58
下一篇 2024-12-27 12:58

相關推薦

  • 使用Vue實現前端AES加密並輸出為十六進制的方法

    在前端開發中,數據傳輸的安全性問題十分重要,其中一種保護數據安全的方式是加密。本文將會介紹如何使用Vue框架實現前端AES加密並將加密結果輸出為十六進制。 一、AES加密介紹 AE…

    編程 2025-04-29
  • Java2D物理引擎簡介及應用

    本文將介紹Java2D物理引擎的基本概念、實現原理及應用案例,以及對應代碼示例。 一、物理引擎概述 物理引擎是一種計算機程序,用於模擬物理系統中的對象和其互動,如重力、碰撞、彈力等…

    編程 2025-04-29
  • Vue TS工程結構用法介紹

    在本篇文章中,我們將從多個方面對Vue TS工程結構進行詳細的闡述,涵蓋文件結構、路由配置、組件間通訊、狀態管理等內容,並給出對應的代碼示例。 一、文件結構 一個好的文件結構可以極…

    編程 2025-04-29
  • Django框架:從簡介到項目實戰

    本文將從Django的介紹,以及如何搭建Django環境開始,逐步深入到Django模型、視圖、模板、表單,最後通過一個小型項目實戰,進行綜合性的應用,讓讀者獲得更深入的學習。 一…

    編程 2025-04-28
  • Vue3的vue-resource使用教程

    本文將從以下幾個方面詳細闡述Vue3如何使用vue-resource。 一、安裝Vue3和vue-resource 在使用vue-resource前,我們需要先安裝Vue3和vue…

    編程 2025-04-27
  • Python三體運動簡介

    本文將從多個方面詳細闡述Python三體運動,包括什麼是三體運動,三體運動的公式與原理,實現三體運動的Python代碼等內容。 一、什麼是三體運動? 三體運動是指三個天體相互作用所…

    編程 2025-04-27
  • ThinkPHP6 + Vue.js: 不使用Fetch的數據請求方法

    本文將介紹如何在ThinkPHP6和Vue.js中進行數據請求,同時避免使用Fetch函數。 一、AJAX:XMLHttpRequest的基礎使用 在進行數據請求時,最基礎的方式就…

    編程 2025-04-27
  • Vue模擬按鍵按下

    本文將從以下幾個方面對Vue模擬按鍵按下進行詳細闡述: 一、Vue 模擬按鍵按下的場景 在前端開發中,我們常常需要模擬按鍵按下的場景,比如在表單中填寫內容後,按下“回車鍵”提交表單…

    編程 2025-04-27
  • Java中的殭屍進程簡介與解決方法

    本文將對Java中的殭屍進程進行詳細闡述,並給出幾種解決方法。 一、殭屍進程的概念 在操作系統中,進程是指正在執行的程序。當一個進程創建了一個子進程,而該子進程完成了任務卻沒有被父…

    編程 2025-04-27
  • 開發前端程序,Vue是否足夠?

    Vue是一個輕量級,高效,漸進式的JavaScript框架,用於構建Web界面。開發人員可以使用Vue輕鬆完成前端編程,開發響應式應用程序。然而,當涉及到需要更大的生態系統,或利用…

    編程 2025-04-27

發表回復

登錄後才能評論