canvas闪烁的圆点灯光特效

canvas闪烁的圆点灯光特效

收藏
canvas闪烁的圆点灯光特效
基于canvas 2D画布绘制彩色的圆点一个个随机闪烁发光背景动画特效。
  • 软件 Dreamweaver
  • 格式 HTML
  • 作者 I想要
  • 上传时间 6年前

使用方法:

1、head引入css文件

<style>
body {
  width: 100%;
  margin: 0;
  overflow: hidden;
  background: hsla(0, 5%, 5%, 1);
  background-repeat: no-repeat;
  background-attachment: fixed;
  background-image: linear-gradient(to right top, hsla(0, 5%, 15%, 0.5), hsla(0, 5%, 5%, 1));
  
  background-image: -moz-linear-gradient(to right top, hsla(0, 5%, 15%, 0.5), hsla(0, 5%, 5%, 1));
}
p{
  text-align:center;
  width:100%;
  color:hsla(0,50%,50%,1);
  font-size:6em;
  text-shadow:1px 1px hsla(0,0%,5%,1),
          -1px -1px hsla(0,0%,5%,1);
  font-family: 'Poiret One', cursive;
  letter-spacing: 6px;
  text-align: center;
  position: relative;
  margin-top: 40vh;
}
</style>

2、body引入HTML代码

<canvas id="canv"></canvas>

<script type="text/javascript">
window.requestAnimFrame = (function() {
  return window.requestAnimationFrame ||
    window.webkitRequestAnimationFrame ||
    window.mozRequestAnimationFrame ||
    window.oRequestAnimationFrame ||
    window.msRequestAnimationFrame ||
    function(callback) {
      window.setTimeout(callback, 1000 / 60);
    };
})();
var c = document.getElementById('canv');
var $ = c.getContext('2d');
var w = c.width = window.innerWidth;
var h = c.height = window.innerHeight;
var _w = w * 0.5;
var _h = h * 0.5;
var arr = [];
var cnt = 0;

window.addEventListener('load', resize);
window.addEventListener('resize', resize, false);

function resize() {
  c.width = w = window.innerWidth;
  c.height = h = window.innerHeight;
  c.style.position = 'absolute';
  c.style.left = (window.innerWidth - w) *
    .01 + 'px';
  c.style.top = (window.innerHeight - h) *
    .01 + 'px';
}

function anim() {
  cnt++;
  if (cnt % 6) draw();
  window.requestAnimFrame(anim);
}
anim();

function draw() {

  var splot = {
    x: rng(_w - 900, _w + 900),
    y: rng(_h - 900, _h + 900),
    r: rng(20, 80),
    spX: rng(-1, 1),
    spY: rng(-1, 1)
  };

  arr.push(splot);
  while (arr.length > 100) {
    arr.shift();
  }
  $.clearRect(0, 0, w, h);

  for (var i = 0; i < arr.length; i++) {

    splot = arr[i];;
    $.fillStyle = rndCol();
    $.beginPath();
    $.arc(splot.x, splot.y, splot.r, 0, Math.PI * 2, true);
    $.shadowBlur = 80;
    $.shadowOffsetX = 2;
    $.shadowOffsetY = 2;
    $.shadowColor = rndCol();
    $.globalCompositeOperation = 'lighter';
    $.fill();

    splot.x = splot.x + splot.spX;
    splot.y = splot.y + splot.spY;
    splot.r = splot.r * 0.96;
  }
}

function rndCol() {
  var r = Math.floor(Math.random() * 180);
  var g = Math.floor(Math.random() * 60);
  var b = Math.floor(Math.random() * 100);
  return "rgb(" + r + "," + g + "," + b + ")";
}

function rng(min, max) {
  return Math.floor(Math.random() * (max - min + 1)) + min;
}
</script>

使用声明

1. 本站所有素材(未指定商用),仅限学习交流请勿用于商业用途。
2. 会员在本站下载的原创商用和VIP素材后,只拥有使用权,著作权归原作者及17素材网所有。
3. 原创商用和VIP素材,未经合法授权,会员不得以任何形式发布、传播、复制、转售该素材,否则一律封号处理。
4. 本平台织梦模板仅展示和个人非盈利用途,织梦系统商业用途请预先授权。