canvas-particles

html5 canvas particle animation

Usage no npm install needed!

<script type="module">
  import canvasParticles from 'https://cdn.skypack.dev/canvas-particles';
</script>

README

canvas particles

Particle generator for html5 canvas animation

examples

Default options create particles with zero gravity and random x and y velocities. Demo.

var Particles = require('canvas-particles');

window.onload = function() {

  // Create an empty canvas and place it on the page
  var canvas = document.createElement("canvas");
  canvas.width = 800;
  canvas.height = 500;
  // black canvas
  canvas.getContext("2d").fillRect(0, 0, canvas.width, canvas.height);
  document.body.appendChild(canvas);

  var particles = Particles().loop(canvas, redrawFn);

  // called on every frame before the particles happen
  function redrawFn(ctx) {
    ctx.fillStyle = "black";
    ctx.fillRect(0,0, canvas.width, canvas.height);
  }
};

Falling particles with random origin and random x velocity. Demo.

var Particles = require('../');

window.onload = function() {

  var canvas = document.createElement("canvas");
  canvas.width = 800;
  canvas.height = 500;
  canvas.getContext("2d").fillRect(0, 0, canvas.width, canvas.height);
  document.body.appendChild(canvas);

  // falling particles with random x velocity and random origin
  var range = 50;
  var xMax = ((canvas.width / 2) + range);
  var xMin = ((canvas.width/2) - range);
  var yMax = ((canvas.height / 2) + range);
  var yMin = ((canvas.height/2) - range);

  var particles = Particles({
    density: 0,
    gravity: 0.03,
    vx: function() {
      return Math.random() * 1.5 - 0.75;
    },
    vy: 0,
    origin: function() {
      return {
        x: Math.random() * (xMax - xMin) + xMin,
        y: Math.random() * (yMax - yMin) + yMin
      };
    },
    color: 'black',
    wobble: function() {
      return Math.random() + 1 - 1.5;
    }
  }).loop(canvas, redrawFn);
  
  function redrawFn(ctx) {
    ctx.fillStyle = "white";
    ctx.fillRect(0,0, canvas.width, canvas.height);
  }
};

Configuration

// options and their defaults, none are required
var particles = Particles({
  maxParticles: 500,  // max number of particles to keep in memory
  origin: {  // pass a hash or a function that returns a hash
    x: canvas.width / 2,
    y: canvas.height / 2
  },
  size = 2,
  vx: Math.random() * 10 - 5,  // x velocity - can be function or number
  vy: Math.random() * 10 - 5,  // y velocity - can be function or number
  gravity: 0,
  color: 'white',  // string or function
  wobble: function() {} // change the x velocity on each iteration
})