svg路徑動畫插件——vivus.js使用記錄

来源:https://www.cnblogs.com/lin494910940/archive/2022/05/24/16302001.html
-Advertisement-
Play Games

Vivus是一個輕量級的JavaScript類(沒有依賴關係),它允許您對svg進行動畫處理,使它們具有正在繪製的外觀。有多種不同的動畫可供選擇,還可以創建自定義腳本,以您喜歡的任何方式繪製SVG。 一、安裝 npm:npm install vivus bower install vivus 通過s ...


Vivus是一個輕量級的JavaScript類(沒有依賴關係),它允許您對svg進行動畫處理,使它們具有正在繪製的外觀。有多種不同的動畫可供選擇,還可以創建自定義腳本,以您喜歡的任何方式繪製SVG。

一、安裝

  1. npm:npm install vivus
  2. bower install vivus
  3. 通過script引用到頁面

二、使用

本例子使用vue框架,在引入插件之後初始化如下:

<template>
  <div style="margin:40px">
    <div id="my-vivus1"></div>
    <el-button @click="myVivus.play(1)"> 播放 </el-button>
    <el-button @click="myVivus.stop()"> 停止 </el-button>
    <el-button @click="myVivus.reset()"> 重置 </el-button>
  </div>
</template>
<script>
import Vivus from "vivus";
export default {
  data() {
    return {
      myVivus: "",
    };
  },
  mounted() {
    this.myVivus = new Vivus(
      "my-vivus1",
      {
        reverseStack: true,
        type: "oneByOne",
        onReady() {
          console.log("ready");
        },
        file: require("@/assets/images/demo.svg"),
        duration: 1000,
      },
      function () {
        console.log("finish");
      }
    );
  },
};
</script>

 總結為:new Vivus(id,options,callBack)

id:存放或者是svg本身的id

options:如何實現動畫的各種參數

callBack:在完成調用之後的回調函數

三、options常用參數

  • type定義了該以什麼樣的形式繪製svg的路徑動畫
  1. type:"delayed"預設值。以下圖片粉色橫線表示運動總時長,黑色線條表示每條path標簽的運動時間,藍色線條表示最開始的path標簽運動軌跡和最後一條path標簽餓運動軌跡,每個path的起始運動時間延遲分佈。

demo如下:

2.type:"sync"以下圖片粉色橫線表示運動總時長,黑色線條表示每條path標簽的運動時間。每一條的path的運動時間和總時間是一樣的,時間同步。

demo如下:

3.type:"oneByOne"以下圖片粉色橫線表示運動總時長,黑色線條表示每條path標簽的運動時間,一個path標簽進行完運動之後接著下一條的path標簽再進行動畫,一個接著一個。

demo如下:

  • file:'svg地址';如果使用了file參數後,就會往指定的id容器裡面插入對應的svg文件,如果容器也是svg標簽的話依舊會插入,所以最好容器為非svg標簽。

四、options完成參數列表

名稱 類型 描述
type string 定義將使用哪種動畫:delayedsynconeByOnescript或。[預設值:]scenarioscenario-syncdelayed
file string 鏈接到 SVG 以製作動畫。如果設置,Vivus 將創建一個對象標簽並將其附加到給構造函數的 DOM 元素。小心,onReady在玩 Vivus 實例之前使用回調
start string 定義如何觸發動畫(inViewport一旦 SVG 在視口中,manual讓您可以自由調用 draw 方法開始,autostart使其立即開始)。[預設值:inViewport]
duration integer 動畫持續時間,以幀為單位。[預設值:200]
delay integer 繪製第一條路徑和最後一條路徑之間的時間,以幀為單位(僅適用於delayed動畫)。
onReady funciton 實例準備好播放時調用的函數。
pathTimingFunction funciton SVG 的每個路徑元素的定時動畫方法。檢查計時功能部分
animTimingFunction funciton 完整 SVG 的定時動畫方法。檢查計時功能部分
dashGap integer 破折號之間的空白額外邊距。如果動畫初始狀態出現故障,請增加它。[預設值:2]
forceRender boolean 強制瀏覽器重新渲染所有更新的路徑項。預設情況下,該值僅true在 IE 上。(有關更多詳細信息,請查看“疑難解答”部分)。
reverseStack boolean 顛倒執行順序。預設行為是從 SVG 中的第一個“路徑”渲染到最後一個。此選項允許您反轉順序。[預設值:false]
selfDestroy boolean 刪除 SVG 上的所有額外樣式,並將其保留為原始樣式。

五、完整方法

名稱 描述
play(speed, callback) 以參數中給定的速度播放動畫。該值可以為負數表示後退,介於 0 和 1 之間表示慢速,>1 表示更快,或 <0 表示從當前狀態反轉。[預設值:1]。動畫結束後執行的回調(可選)
stop() 停止動畫。
reset() 將 SVG 重新初始化為原始狀態:未繪製。
finish() 將 SVG 設置為最終狀態:繪製。
setFrameProgress(progress) 設置動畫的進度。進度必須是 0 到 1 之間的數字。
getStatus() 獲取 , start,progress之間的動畫狀態end
destroy() 重置 SVG 但使實例無序。

六.vivus內置了幾種運動方法

Vivus.LINEAR       Vivus.EASE             Vivus.EASE_OUT        Vivus.EASE_IN   Vivus.EASE_OUT_BOUNCE 可以用在pathTimingFunction和animTimingFunction 上如 animTimingFunction:Vivus.EASE_OUT_BOUNCE; 如:
mounted() {
    this.myVivus = new Vivus(
      "my-vivus1",
      {
        reverseStack: true,
        type: "oneByOne",
        animTimingFunction:Vivus.EASE_OUT_BOUNCE,
        file: require("@/assets/images/demo.svg"),
        duration: 300,
      },
    );
  },

參考文檔:vivus.js的github倉庫

本文來自博客園,作者:七分暖,轉載請註明原文鏈接:https://www.cnblogs.com/lin494910940/p/16302001.html


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本文記錄如何在 Vue2 環境下儘量使用 Vue3 的 Composition-api 並配合 Vuetify2 使用 ...
  • ⚡工程化、模塊化與更舒服的用戶腳本開發方式,顯著提升開發體驗 ...
  • 第1章 課程介紹(瞭解本課程必看) 試看1 節 | 8分鐘 整體瞭解課程目標和課程內容安排,對 Next.js 作簡要介紹,讓同學對要做的事情有直觀瞭解,準備前置流程。 收起列表 視頻:1-1 導學 (07:23)試看 第2章 使用Next.js 項目初始化及工程配置介紹3 節 | 35分鐘 初始化 ...
  • 第1章 【序章】關於這門課,你需要瞭解得都在這裡 試看3 節 | 5分鐘 前端工程化&ne;Webpack ,真正的前端工程化覆蓋一個項目從創建到開發到發佈的整個流程,既是目前大廠主流的項目提效方案,更是高薪面試 “必考項”!從本章開始,讓我們一起跟隨 Sam 老師,開啟“前端工程化”得升級之旅吧! ...
  • 第1章 課程介紹 試看1 節 | 15分鐘 本章中,將會對課程的內容做介紹說明,總覽課程中涉及到的知識點和學習方向。 收起列表 視頻:1-1 課程介紹 (14:39)試看 第2章 從0搭建一個項目腳手架5 節 | 36分鐘 從0配置開發環境並初始化項目腳手架 收起列表 視頻:2-1 本章導學 (01 ...
  • ###效果圖 ###組件介紹 原生小程式編寫,簡單輕便,拿來即用。 gitee地址:https://gitee.com/qq_connect-EC6BCC0B556624342/wx-calendar ###代碼部分(這裡可能不是最新的推薦去gitee克隆代碼) calendar.wxml <!-- ...
  • 階段一:課程設計及前端創建腳手架開發 第1周 需求分析和架構設計:做什麼,如何做? 開工之前,先來看看我們到底要做一個什麼項目,有哪些功能。然後站在上帝視角,從整體的架構層面,該如何設計該項目。 課程安排: 1、需求分析-瞭解軟體開發生命周期2、技術整體架構3、研發流程優化背後的思考4、為什麼要優化 ...
  • 建議您在閱覽此文之前學完W3school - JS Tutorial章節所有內容 經典的問題 在一些文章中或者工作面試問題上,會遇見這種看似簡單的經典問題。 for(var i = 0; i < 5; i++) { setTimeout(function () { console.log(i); } ...
一周排行
    -Advertisement-
    Play Games
  • JWT(JSON Web Token)是一種用於在網路應用之間傳遞信息的開放標準(RFC 7519)。它使用 JSON 對象在安全可靠的方式下傳遞信息,通常用於身份驗證和信息交換。 在Web API中,JWT通常用於對用戶進行身份驗證和授權。當用戶登錄成功後,伺服器會生成一個Token並返回給客戶端 ...
  • 老周在幾個世紀前曾寫過樹莓派相關的 iOT 水文,之所以沒寫 Nano Framework 相關的內容,是因為那時候這貨還不成熟,可玩性不高。不過,這貨現在已經相對完善,老周都把它用在項目上了——第一個是自製的智能插座,這個某寶上50多塊可以買到,搜“esp32 插座”就能找到。一種是 86 型盒子 ...
  • 引言 上一篇我們創建了一個Sample.Api項目和Sample.Repository,並且帶大家熟悉了一下Moq的概念,這一章我們來實戰一下在xUnit項目使用依賴註入。 Xunit.DependencyInjection Xunit.DependencyInjection 是一個用於 xUnit ...
  • 在 Avalonia 中,樣式是定義控制項外觀的一種方式,而控制項主題則是一組樣式和資源,用於定義應用程式的整體外觀和感覺。本文將深入探討這些概念,並提供示例代碼以幫助您更好地理解它們。 樣式是什麼? 樣式是一組屬性,用於定義控制項的外觀。它們可以包括背景色、邊框、字體樣式等。在 Avalonia 中,樣 ...
  • 在處理大型Excel工作簿時,有時候我們需要在工作表中凍結窗格,這樣可以在滾動查看數據的同時保持某些行或列固定不動。凍結窗格可以幫助我們更容易地導航和理解複雜的數據集。相反,當你不需要凍結窗格時,你可能需要解凍它們以獲得完整的視野。 下麵將介紹如何使用免費.NET庫通過C#實現凍結Excel視窗以鎖 ...
  • .NET 部署 IIS 的簡單步驟一: 下載 dotnet-hosting-x.y.z-win.exe ,下載地址:.NET Downloads (Linux, macOS, and Windows) (microsoft.com) .NET 部署 IIS 的簡單步驟二: 選擇對應的版本,點擊進入詳 ...
  • 拓展閱讀 資料庫設計工具-08-概覽 資料庫設計工具-08-powerdesigner 資料庫設計工具-09-mysql workbench 資料庫設計工具-10-dbdesign 資料庫設計工具-11-dbeaver 資料庫設計工具-12-pgmodeler 資料庫設計工具-13-erdplus ...
  • 初識STL STL,(Standard Template Library),即"標準模板庫",由惠普實驗室開發,STL中提供了非常多對信息學奧賽很有用的東西。 vector vetor是STL中的一個容器,可以看作一個不定長的數組,其基本形式為: vector<數據類型> 名字; 如: vector ...
  • 前言 最近自己做了個 Falsk 小項目,在部署上伺服器的時候,發現雖然不乏相關教程,但大多都是將自己項目代碼複製出來,不講核心邏輯,不太簡潔,於是將自己部署的經驗寫成內容分享出來。 uWSGI 簡介 uWSGI: 一種實現了多種協議(包括 uwsgi、http)並能提供伺服器搭建功能的 Pytho ...
  • 1 文本Embedding 將整個文本轉化為實數向量的技術。 Embedding優點是可將離散的詞語或句子轉化為連續的向量,就可用數學方法來處理詞語或句子,捕捉到文本的語義信息,文本和文本的關係信息。 ◉ 優質的Embedding通常會讓語義相似的文本在空間中彼此接近 ◉ 優質的Embedding相 ...