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日

相关文章

  • vue跳转后不记录历史记录的问题

    对于Vue的单页面应用(SPA),在页面之间进行跳转时常常会出现一个问题:跳转后浏览器的地址栏会发生变化,但是页面的历史记录并没有被记录下来,点击浏览器中的“后退”按钮时,不能正确的回退到上一个页面。 这个问题的出现是因为在Vue的路由中使用了history模式,而如果想要在这种模式下正常记录历史记录,需要在路由跳转时手动调用浏览器API添加历史记录。 下面…

    JavaScript 2023年6月11日
    00
  • JS加载解析Markdown文档过程详解

    以下是详细的攻略,在此过程中,假设使用的是原生JS,没有使用任何外部库: 1. 获取Markdown文档内容 要加载Markdown文档,我们首先需要获取文件内容。可以使用XMLHttpRequest对象进行同步或异步的文件读取。这里我们以异步的方式读取Markdown文件。 function loadMarkdownFile(url, callback) …

    JavaScript 2023年5月27日
    00
  • javascript 拖动_cookie_ajax等

    JavaScript 是一门非常强大的编程语言,可以支持前端页面的实时交互。其中,拖动、cookie 和 Ajax 是 JavaScript 最为常用的功能之一。下面将详细讲解这些内容的完整攻略。 JavaScript 拖动 通过 JavaScript,可以实现网页元素的拖动效果。具体实现方式如下: 首先,通过 JavaScript 获取需要拖动的元素。 l…

    JavaScript 2023年6月10日
    00
  • JS的时间格式化和时间戳转换函数示例详解

    本文主要讲解JavaScript中的时间格式化和时间戳转换函数,主要包含以下内容: JavaScript中时间的基本概念和表示方法 时间格式化函数的基本思路和常见的格式化形式 时间戳转换函数的基本思路和实现方法 基于moment.js的时间格式化和转换示例 自定义时间格式化和转换函数的实现示例 1. JavaScript中时间的基本概念和表示方法 在Java…

    JavaScript 2023年5月27日
    00
  • 最新JS正则表达式验证邮箱和手机号实例(2022)

    针对这篇“最新JS正则表达式验证邮箱和手机号实例(2022)”文章,我将提供完整攻略如下: 文章概览 了解文章主题 确定验证目标:邮箱和手机号 设计验证规则:使用正则表达式 实现邮件和手机号码验证 确定验证目标:邮箱和手机号 在阅读这篇文章后,我们了解到验证目标是邮箱和手机号。在开始验证规则设计之前,首先需要了解邮箱和手机号的基本格式。 邮箱格式 一般的邮箱…

    JavaScript 2023年6月10日
    00
  • 关于JavaScript的Array数组方法详解

    标题:关于JavaScript的Array数组方法详解 Array.prototype JavaScript中的数组是一种非常重要的数据类型,具有独特的属性和方法。在此处,我们将给出一些有关数组的基础知识,以及一些我们经常需要使用的方法。 基础知识 创建数组 创建一个数组可以使用直接量或者Array构造函数。直接量使用方括号包围数组元素,逗号隔开。例如: l…

    JavaScript 2023年5月27日
    00
  • JavaScript 对象创建的3种方法

    JavaScript对象创建一共有3种方式,它们分别是对象字面量、构造函数和Object.create()方法。 对象字面量 对象字面量是用花括号{}创建一个新对象的方式,使用最为广泛,也是最简单的一种。 示例一: // 创建一个对象字面量 const person = { name: "张三", age: 20, gender: &qu…

    JavaScript 2023年5月27日
    00
  • js实现网页防止被iframe框架嵌套及几种location.href的区别

    下面我将详细讲解”JS实现网页防止被iframe框架嵌套及几种location.href的区别”的完整攻略。 JS实现网页防止被iframe框架嵌套 在编写网页时,我们可能希望页面不能被嵌套在iframe框架中,以避免网页的被其他网站直接嵌套到其它站点的页面上,从而保证网站数据的安全性和用户体验。为了实现网页的防止被iframe框架嵌套,我们可以使用以下方法…

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