基于canvas实现的绚丽圆圈效果完整实例

 更新时间:2016年01月26日 10:52:50   作者:m1870164  
这篇文章主要介绍了基于canvas实现的绚丽圆圈效果,以完整实例形式分析了JavaScript结合html5的canvas实现动态图形的绘制技巧,需要的朋友可以参考下

本文实例讲述了基于canvas实现的绚丽圆圈效果。分享给大家供大家参考,具体如下:

运行效果截图如下:

具体代码如下:

<!DOCTYPE html>
<html>
 <head>
  <title>demo</title>
  <style type="text/css">
   body {
    margin:0; background:black;
   }
   #canvas {
    border:3px solid gray; box-shadow:0px 0px 2px 2px #D5D5D5; margin-left:100px; margin-top:50px;
   }
   #power {
    position:fixed; bottom:50px; right:50px; 
   }
   #power a {
    color:green; text-decoration:none; display:inline-block; padding:20px; border:2px solid orange; box-shadow:0px 0px 2px 2px blue;
    font-size:30px;
   }
  </style>
 </head>
 <body>
  <canvas id="canvas" width="500px" height="500px"></canvas>
  <script type="text/javascript">
   var canvas = document.getElementById("canvas");
   var ctx = canvas.getContext("2d");
   var colorList = "abcdefABCDEF0123456789".split("");
   var colorListLength = colorList.length;
   var arcList = [];
   function createArc(attr) {
    ctx.beginPath();
    ctx.fillStyle = attr.color || "black";
    ctx.arc(attr.x, attr.y, attr.r, 0, Math.PI*2);
    ctx.closePath();
    ctx.fill();
   }
   function color() {
    var color = "#";
    for(var i=0; i<6; i++) {
     color += colorList[Math.round(Math.random()*colorListLength)];
    }
    return color;
   }
   function Arc() {
    this.count = 0;
    this.r = 5;
    this.x = Math.round(Math.random()*500);
    this.add = Math.round(Math.random()*5);
    this.limit = Math.round(Math.random()*100)
    this.mode = Math.round(Math.random());
    var _self = this;
    _self.run = function() {
     if(_self.r >= _self.limit) {
      _self.run = null;
      return;
     }
     _self.x += _self.add*(_self.mode == 1 ? 1 : -1);
     createArc({x: _self.x, y:Math.round(Math.random()*400), r: _self.r, color: color()});
     _self.r += 5;
     return _self;
    };
    return this;
   }
   var init_count = 150;
   var init_time = 0;
   var init = function() {
    init_time++;
    arcList.length = 0;
    for(var i=0; i<init_count; i++) {
     arcList.push(new Arc());
    }
   };
   var reInit = function() {
    var angle = Math.PI*2/init_count;
    for(var i=0; i<init_count; i++) {
     var _angle = i*angle;
     createArc({x: 250 + 250*Math.cos(_angle), y: 250 + 250*Math.sin(_angle), r: 5, color:color()});
     createArc({x: 250 + 200*Math.cos(_angle), y: 250 + 200*Math.sin(_angle), r: 5, color:color()});
     createArc({x: 250 + 150*Math.cos(_angle), y: 250 + 150*Math.sin(_angle), r: 5, color:color()});
     createArc({x: 250 + 100*Math.cos(_angle), y: 250 + 100*Math.sin(_angle), r: 5, color:color()});
    }
   };
   init();
   var globalInterval = setInterval(function() {
    ctx.clearRect(0, 0, 500, 500);
    var count = 0;
    for(var i=0; i<init_count; i++) {
     var arc = arcList[i];
     arc.run ? arc.run() : count++;
    }
    if(count == init_count) {
     if(init_time >= 2) {
      reInit();
      return;
     }
     init();
    }
   }, 100);
  </script>
 </body>
</html>

更多关于js特效相关内容感兴趣的读者可查看本站专题:《jQuery动画与特效用法总结》及《jQuery常见经典特效汇总

希望本文所述对大家JavaScript程序设计有所帮助。

相关文章

  • bootstrap daterangepicker汉化以及扩展功能

    bootstrap daterangepicker汉化以及扩展功能

    这篇文章主要为大家详细 介绍了bootstrap daterangepicker汉化以及扩展功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • xmlplus组件设计系列之图标(ICON)(1)

    xmlplus组件设计系列之图标(ICON)(1)

    这篇文章主要为大家详细介绍了xmlplus组件设计系列之图标ICON的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • JavaScript中你不知道的数学方法分享(非常实用)

    JavaScript中你不知道的数学方法分享(非常实用)

    JavaScript的Math对象包含了一些非常有用和强大的数学操作,可以在Web开发中使用,本文为大家整理了一些非常实用的数学方法,希望对大家有所帮助
    2023-07-07
  • JS数组循环的方式以及效率分析对比

    JS数组循环的方式以及效率分析对比

    本文详细讲解了JS数组循环的方式以及效率分析对比,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-11-11
  • 原生JS查找元素的方法(推荐)

    原生JS查找元素的方法(推荐)

    下面小编就为大家带来一篇原生JS查找元素的方法(推荐)。小编觉得挺不错的,希望对大家有所帮助。一起跟随小编过来看看吧,祝大家游戏愉快哦
    2016-11-11
  • JavaScript声明变量时为什么要加var关键字

    JavaScript声明变量时为什么要加var关键字

    var用来声明变量,但是这个语法并不严格要求,很多时修改,我们可以直接使用一个变量而不用var声明它,不过还是建议大家加var
    2014-09-09
  • 详解JavaScript逻辑And运算符

    详解JavaScript逻辑And运算符

    这篇文章主要介绍了JavaScript逻辑And运算符,在JavaScript中,逻辑 AND 运算符用双和号(&&)表示
    2015-12-12
  • 小程序实现人脸识别功能(百度ai)

    小程序实现人脸识别功能(百度ai)

    这篇文章主要介绍了小程序实现人脸识别功能(百度ai),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-12-12
  • JavaScript实现获取img的原始尺寸的方法详解

    JavaScript实现获取img的原始尺寸的方法详解

    在微信小程序开发时,它的image标签有一个默认高度,这样你的图片很可能出现被压缩变形的情况,所以就需要获取到图片的原始尺寸对image的宽高设置,本文就来分享一下JavaScript实现获取img的原始尺寸的方法吧
    2023-03-03
  • antd项目实现彩蛋效果的详细代码

    antd项目实现彩蛋效果的详细代码

    这篇文章主要介绍了antd项目如何实现彩蛋效果,首先在components目录下创建Transform目录,包括index.css、index.js,index.js是主要的逻辑代码,下面对代码进行分析,需要的朋友可以参考下
    2022-09-09

最新评论