SVG动画vivus.js库使用小结(实例代码)

下面是一份详细的攻略,包含vivus.js库的使用方法及实例代码:

介绍

Vivus.js库是一个轻量级的javascript库,可以创建美观的SVG描边动画效果。它支持很多动态效果,例如从头开始显示、流线显示、延迟显示等等。

安装

首先,在你的html文档中引入vivus.js文件:

<script src="vivus.js"></script>

使用

基本用法

下面是一个最基本的使用vivus.js的例子:

<div id="my-svg"></div>
<script>
  new Vivus('my-svg', {type: 'oneByOne'});
</script>

上面的代码在my-svg元素中创建一个SVG动画效果,一次只以单个路径描绘。

使用选项

你可以在创建Vivus对象时传递一些选项,以自定义SVG动画效果。

new Vivus('my-svg', {
  type: 'delayed',
  duration: 200,
  start: 'autostart',
  dashGap: 20
});

选项说明:

  • type:动画类型,可选值为oneByOne、sync、delayed、async、scenario、oneByOneSync、oneByOneDelayed、oneByOneUnfold、default
  • duration:动画时间,单位毫秒,默认为200
  • start:自动开始动画,默认为'instant'
  • dashGap:以未绘制线段的间隔,单位像素,默认为2

使用回调方法

你也可以使用回调方法,在动画播放过程中执行一些自定义操作。

new Vivus('my-svg', {
  type: 'delayed',
  duration: 200,
  start: 'autostart',
  dashGap: 20
}, function(){
  console.log('动画播放完成!');
});

回调方法会在指定的动画时间后被调用。

示例代码

创建一个立方体旋转动画

下面是一个创建立方体旋转动画的示例代码:

<div id="my-svg"></div>
<script>
  var mySVG = new Vivus('my-svg', {
    type: 'delayed',
    duration: 200,
    start: 'inViewport',
    reverseStack: true
  });

  var paths = [
    'M29.929,106.498c7.253,4.185,15.746,1.904,19.951-5.345l41.969-72.352c4.209-7.251,1.916-15.746-5.344-19.951\tc-7.251-4.209-15.746-1.916-19.949,5.344l-41.971,72.352C20.214,93.773,22.716,102.271,29.929,106.498z',
    'M77.619,111.729c7.175-3.813,10.554-12.354,6.741-19.51L43.439,28.986c-3.813-7.175-12.358-10.56-19.51-6.741\tc-7.175,3.81-10.556,12.351-6.742,19.526L58.11,104.988C65.265,112.142,70.447,115.537,77.619,111.729z',
    'M76.118,66.861c-3.808-7.17-10.911-11.366-17.948-11.366c-7.027,0-14.131,4.196-17.938,11.366l-29.34,55.221\tc-3.808,7.17-2.358,15.685,3.812,19.5c5.98,3.849,14.486,2.337,18.301-3.812l29.342-55.222\tC82.965,80.604,79.926,73.031,76.118,66.861z',
    'M30.545,63.891c-7.27-4.21-15.771-1.879-19.978,5.336L4.599,141.58c-4.201,7.213-1.915,15.734,5.345,19.939\tc3.272,1.898,6.845,2.884,10.421,2.884c6.115,0,12.098-2.957,15.742-8.307l5.511-9.479l26.146-45.009l5.509-9.48\tc2.954-5.076,2.054-11.16-1.73-15.336C45.146,66.524,38.022,63.744,30.545,63.891z'
  ];

  paths.forEach(function(path, i){
    var p = document.createElementNS('http://www.w3.org/2000/svg', 'path');
    p.setAttributeNS(null, 'd', path);
    p.style.fill = 'none';
    p.style.stroke = '#ffffff';
    p.style.strokeWidth = '6';
    p.style.strokeLinecap = 'round';
    p.style.strokeLinejoin = 'round';
    p.style.strokeDasharray = '200, 900';
    p.style.strokeDashoffset = '0';
    mySVG.el.appendChild(p);
  });
</script>

在这个示例中,我们使用forEach()方法循环遍历paths数组,创建并添加SVG路径。

创建流星动画

下面是一个创建流星动画的示例代码:

<div id="meteor"></div>
<script>
  var meteor = new Vivus('meteor', {
    type: 'delayed',
    duration: 200
  });

  var path = 'M16.3,29.9C9.5,26.5,5.4,18,5.4,11c0-2.1,0.2-4.2,0.6-6.3L3.7,2.2l2.4,1.3l1.6,0.9\r\n\tc3.8-1.5,7.8-2.3,11.8-2.3c10.1,0,19,6.5,22.1,16.3l0.5,1.7l1.7-0.4l4.5-1.1l-2.6-1.2C54,5.4,45.7,0.6,36.6,0.6\r\n\tC20.5,0.6,7.7,10.2,4.6,24l8.2,0.5l1.8,0.1L16.3,29.9z';
  var tail = document.createElementNS('http://www.w3.org/2000/svg', 'path');
  tail.setAttributeNS(null, 'd', path);
  tail.style.fill = 'none';
  tail.style.stroke = '#ffffff';
  tail.style.strokeWidth = '1';
  tail.style.strokeLinecap = 'round';
  tail.style.strokeLinejoin = 'round';
  tail.style.strokeDasharray = '0, 60, 50';
  tail.style.strokeDashoffset = '0';
  meteor.el.appendChild(tail);

  var core = document.createElementNS('http://www.w3.org/2000/svg', 'circle');
  core.setAttributeNS(null, 'cx', '20');
  core.setAttributeNS(null, 'cy', '11');
  core.setAttributeNS(null, 'r', '2');
  core.style.fill = '#fff';
  meteor.el.appendChild(core);

  meteor.play(0.5);
</script>

在这个示例中,我们首先创建一个SVG路径,用于绘制流星的尾巴。然后,使用createElementNS()方法创建一个SVG圆形,作为流星的“核心”。

在添加元素后,我们调用play()方法来播放动画。我们传递的0.5参数表示动画播放进度的百分比,这意味着我们指定流星进度的一半时,其余的路径将逐渐显示。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SVG动画vivus.js库使用小结(实例代码) - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • JavaScript ES6中const、let与var的对比详解

    JavaScript ES6中const、let与var的对比详解 简介 在JavaScript中,有三种声明变量的关键字:var, let, const。很多初学者可能对它们的区别有所疑惑。本文将详细解释它们之间的区别。 var var 是在ES6之前使用最广泛的声明变量的关键字。它有如下特点: 它是全局作用域或函数作用域内的变量。 它可以被重复声明。 它…

    JavaScript 2023年6月10日
    00
  • JavaScript实现将数组中所有元素连接成一个字符串的方法

    实现将数组中所有元素连接成一个字符串的方法有以下两种: 方法一:Array.prototype.join() JavaScript中可以使用Array.prototype.join()函数将数组中的所有元素连接成一个字符串。 使用格式:Array.join(separator) 参数说明:- separator:可选参数,指定分隔符,将数组中的元素连接成字符…

    JavaScript 2023年5月28日
    00
  • 判断可拖动div是否重合 重合多少

    判断可拖动div是否重合,需要考虑以下几个步骤: 步骤一:确定两个div的位置、大小 判断两个div是否重合,首要条件是要获取它们的位置以及大小。可以通过jQuery中的offset和width/height方法获取其在页面上的位置和大小。例如: var $div1 = $("#div1"); var $div2 = $("#d…

    JavaScript 2023年6月11日
    00
  • Javascript正则表达式验证账号、手机号、电话和邮箱的合法性

    下面是关于Javascript正则表达式验证账号、手机号、电话和邮箱的合法性的完整攻略。 介绍 正则表达式是一种用于匹配文本的工具,它可以用于验证表单输入、处理文本等任务。在Javascript中,可以使用RegExp对象来定义正则表达式,并使用match()、search()、replace()等方法来操作字符串。下面将介绍如何使用正则表达式来验证账号、手…

    JavaScript 2023年6月10日
    00
  • SWFObject基本用法实例分析

    那么针对“SWFObject基本用法实例分析”的攻略,我会从以下几个方面着手进行详细讲解: SWFObject基本介绍 SWFObject的引入 SWFObject的基本用法 实例分析 结束语 接下来会一步步讲解,希望对您有所帮助。 1. SWFObject基本介绍 SWFObject是一个用于嵌入Flash对象的JavaScript库,使用SWFObjec…

    JavaScript 2023年6月11日
    00
  • Javascript数组及类数组相关原理详解

    Javascript数组及类数组相关原理详解 在Javascript中数组是一个非常重要的数据结构,它可以存储多个数据并进行操作。但是在实际开发中,我们还会遇到类数组对象,这些对象类似于数组但并不是数组,本文将详细介绍Javascript数组及类数组相关原理。 数组基本操作 定义数组 定义数组有两种方式,一种是通过字面量方式,另一种是通过构造函数方式。 //…

    JavaScript 2023年5月27日
    00
  • 解决js ajax同步请求造成浏览器假死的问题

    首先,我们需要了解什么是ajax同步请求造成浏览器假死的问题。 当我们发送一个ajax同步请求时,浏览器会阻塞页面的渲染直到请求完成。这意味着如果请求需要很长时间才能完成,那么用户就无法操作页面。这通常被称为浏览器的“假死”问题。 那么,如何解决这个问题呢?以下是一些可能的解决方案: 1. 使用异步请求 将ajax请求设置为异步请求,而不是同步请求。这可以通…

    JavaScript 2023年6月11日
    00
  • asp.net中button控制先执行js再执行后台程序的方法

    要实现asp.net中button控制先执行js再执行后台程序的方法,我们可以使用以下两种方法: 方法一:在button控件的OnClick事件中添加javascript代码,并在js代码中通过__doPostBack()函数触发后台的OnClick事件执行。具体实现如下: <asp:Button ID="btnSubmit" ru…

    JavaScript 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部