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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...