JSFiddle - React, Tailwind, and code Playground
by jakie8
HTML
<canvas id="world"><p class="noCanvas">You need a <a href="http://www.google.com/chrome">modern browser</a> to view this.</p></canvas>
JavaScript
/**
* With love.
* http://hakim.se/experiments/
* http://twitter.com/hakimel
*/
var RADIUS = 110;
var RADIUS_SCALE = 1;
var RADIUS_SCALE_MIN = 1;
var RADIUS_SCALE_MAX = 1.5;
var SCREEN_WIDTH = (RADIUS*2)*RADIUS_SCALE_MAX;
var SCREEN_HEIGHT = (RADIUS*2)*RADIUS_SCALE_MAX;
// The number of particles that are used to generate the trail
var QUANTITY = 25;
var canvas;
var context;
var particles;
var mouseX = (window.innerWidth - SCREEN_WIDTH);
var mouseY = (window.innerHeight - SCREEN_HEIGHT);
var mouseIsDown = false;
init();
function init() {
canvas = document.getElementById( 'world' );
if (canvas && canvas.getContext) {
context = canvas.getContext('2d');
// Register event listeners
document.addEventListener('mousemove', documentMouseMoveHandler, false);
document.addEventListener('mousedown', documentMouseDownHandler, false);
document.addEventListener('mouseup', documentMouseUpHandler, false);
canvas.addEventListener('touchstart', canvasTouchStartHandler, false);
canvas.addEventListener('touchmove', canvasTouchMoveHandler, false);
window.addEventListener('resize', windowResizeHandler, false);
createParticles();
windowResizeHandler();
setInterval( loop, 1000 / 60 );
}
}
function createParticles() {
particles = [];
for (var i = 0; i < QUANTITY; i++) {
var particle = {
position: { x: mouseX, y: mouseY },
shift: { x: mouseX, y: mouseY },
size: 1,
angle: 0,
speed: 0.01+Math.random()*0.04,
targetSize: 1,
fillColor: '#' + (Math.random() * 0x404040 + 0xaaaaaa | 0).toString(16),
orbit: RADIUS*.5 + (RADIUS * .5 * Math.random())
};
particles.push( particle );
}
}
function documentMouseMoveHandler(event) {
//mouseX = event.clientX - (window.innerWidth - SCREEN_WIDTH) * .5;
//mouseY = event.clientY - (window.innerHeight - SCREEN_HEIGHT) * .5;
}
function documentMouseDownHandler(event) {
mouseIsDown =...