Vivus是一個輕量級的JavaScript類(沒有依賴關係),它允許您對svg進行動畫處理,使它們具有正在繪製的外觀。有多種不同的動畫可供選擇,還可以創建自定義腳本,以您喜歡的任何方式繪製SVG。 一、安裝 npm:npm install vivus bower install vivus 通過s ...
Vivus是一個輕量級的JavaScript類(沒有依賴關係),它允許您對svg進行動畫處理,使它們具有正在繪製的外觀。有多種不同的動畫可供選擇,還可以創建自定義腳本,以您喜歡的任何方式繪製SVG。
一、安裝
- npm:npm install vivus
- bower install vivus
- 通過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的路徑動畫
- 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 | 定義將使用哪種動畫:delayed 、sync 、oneByOne 、script 或。[預設值:]scenario scenario-sync delayed |
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