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

yizhihongxing

下面是一份详细的攻略,包含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日

相关文章

  • js获得指定控件输入光标的坐标兼容IE,Chrome,火狐等多种主流浏览器

    要获得指定控件输入光标的坐标,我们可以使用以下步骤: 获取页面中的指定控件对象 获取控件对象相对于页面左上角的位置 获取控件中光标的位置 将相对位置和光标位置相加,计算出光标在页面中的实际位置 以下是具体的实现步骤: 1.获取页面中的指定控件对象 我们可以使用document.getElementById方法获取指定id值的控件对象。例如,我们要获取id为t…

    JavaScript 2023年6月10日
    00
  • JS计算网页停留时间代码

    JS计算网页停留时间代码可以帮助网页作者分析读者在该网页上的停留时间,进而提高网站的口碑和用户粘度。以下是JS计算网页停留时间代码的完整攻略。 1. 标准浏览器方法 要实现JS计算网页停留时间的代码,可以使用标准的浏览器方法。具体实现方法如下: 在网页中添加以下代码: <script> var timeStart=0, timeEnd=0, ti…

    JavaScript 2023年5月27日
    00
  • js跨域调用WebService的简单实例

    下面是详细讲解“js跨域调用WebService的简单实例”的完整攻略,包含了两条示例说明。 什么是跨域调用? 在同源策略下,Web页面只能调用同一域名下的Web服务,无法调用外部的Web服务。这是因为出于安全考虑,为防止页面通过Javascript获取到外部服务的数据后,将数据篡改或者传输给恶意的第三方站点。 但是有时候,我们确实需要通过Javascrip…

    JavaScript 2023年6月11日
    00
  • 详解JSP 内置对象request常见用法

    详解JSP 内置对象request常见用法 1. request对象介绍 JSP内置对象request代表了一个HTTP请求,包含了客户端上所有的请求信息。当客户端发出请求,服务器就会创建一个request对象,并且request对象会一直存在于整个HTTP请求的生命周期中。request对象可以用来获取HTTP请求的参数,以及在服务器端保存和获取数据。 2…

    JavaScript 2023年6月11日
    00
  • JavaScript 定时器 SetTimeout之定时刷新窗口和关闭窗口(代码超简单)

    我们来详细讲解一下JavaScript定时器SetTimeout之定时刷新窗口和关闭窗口的攻略。 首先,什么是setTimeout呢?setTimeout() 是 JavaScript 中的一个函数,它可以在一定的时间间隔之后执行一次函数或者是多次执行一个函数。这里的时间间隔是以毫秒为单位。 接下来,我们来说明一下如何使用setTimeout函数来定时刷新窗…

    JavaScript 2023年6月11日
    00
  • JS实现给json数组动态赋值的方法示例

    下面是JS实现给json数组动态赋值的方法示例的完整攻略: 1. 确认Json数组的数据结构 首先,在动态给Json数组赋值之前,我们需要了解这个数组的数据结构,确认这个数组中包含哪些属性,以及它们的数据类型。 比如,假设我们要动态给一个名为users的Json数组添加用户数据。那么,我们可以分析一下这个数组的数据结构: [ { "name&quo…

    JavaScript 2023年5月27日
    00
  • js实现简单圆盘时钟

    下面让我来详细讲解一下如何用JavaScript实现一个简单的圆盘时钟。 一、准备工作 在实现之前,首先需要准备一些基础的知识和文件: 了解HTML5、CSS3和JavaScript基础知识; 引入jQuery库,在代码中使用jQuery封装好的方法来实现; 创建一个HTML文件,命名为index.html,并在其中添加一个canvas元素,用于绘制时钟。 …

    JavaScript 2023年5月27日
    00
  • javascript实现获取字符串hash值

    获取字符串的哈希值实际上是将字符串转换为一个数字,这个数字唯一地代表了该字符串。JavaScript中可以使用哈希算法来获取字符串的哈希值,下面是获取字符串哈希值的完整攻略。 步骤1:选定哈希函数 JavaScript中常用的字符串哈希函数有很多,比如BKDRHash、APHash、JSHash等。这里以BKDRHash为例,其实现代码如下: functio…

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