JSFiddle - React, Tailwind, and code Playground
by mkdizajn
HTML
<script src="https://soulwire.github.io/sketch.js/js/sketch.js"></script>
<section id="home" >
<div class="overlay">
<div id="particles"></div>
<div class="text-content">
content
</div>
</div>
</section>
CSS
html, body{
padding:0; margin:0;
}
ul{
margin:0;
padding:0;
}
section {
padding: 0; margin:0;
}
#home {
position: relative;
padding: 0px;
background-image: url(../images/cover1.jpg);
background-position:center center;
background-size: cover;
}
#home #particles {
background-color:#333333;
}
#home .overlay {
background-color: rgba(0, 0, 0, 0.60);
}
#home .text-content {
width: 65%;
margin: auto;
padding: 0px;
position: absolute;
top: 50%;
right: 0;
left: 0;
-moz-transform: translateY(-50%);
-ms-transform: translateY(-50%);
-o-transform: translateY(-50%);
-webkit-transform: translateY(-50%);
transform: translateY(-50%);
color:#ffffff;
text-align: center;
}
#particles canvas{
margin:-15px -15px 0 0;
}
JavaScript
// ----------------------------------------
// Particle
// ----------------------------------------
function Particle(x, y, radius) {
this.init(x, y, radius);
}
Particle.prototype = {
init: function (x, y, radius) {
this.alive = true;
this.radius = radius || 10;
this.wander = 0.15;
this.theta = random(TWO_PI);
this.drag = 0.92;
this.color = '#fff';
this.x = x || 0.0;
this.y = y || 0.0;
this.vx = 0.0;
this.vy = 0.0;
},
move: function () {
this.x += this.vx;
this.y += this.vy;
this.vx *= this.drag;
this.vy *= this.drag;
this.theta += random(-0.5, 0.5) * this.wander;
this.vx += sin(this.theta) * 0.1;
this.vy += cos(this.theta) * 0.1;
this.radius *= 0.96;
this.alive = this.radius > 0.5;
},
draw: function (ctx) {
ctx.beginPath();
ctx.arc(this.x, this.y, this.radius, 0, TWO_PI);
ctx.fillStyle = this.color;
ctx.fill();
}
};
// ----------------------------------------
// Example
// ----------------------------------------
var MAX_PARTICLES = 280;
var COLOURS = ['#69D2E7', '#A7DBD8', '#E0E4CC', '#F38630', '#FA6900', '#FF4E50', '#F9D423'];
var particles = [];
var pool = [];
var demo = Sketch.create({
container: document.getElementById('particles'),
retina: 'auto'
});
demo.setup = function () {
// Set off some initial particles.
var i, x, y;
for (i = 0; i < 20; i++) {
x = (demo.width * 0.5) + random(-100, 100);
y = (demo.height * 0.5) + random(-100, 100);
demo.spawn(x, y);
}
};
demo.spawn = function (x, y) {
var particle, theta, force;
if (particles.length >= MAX_PARTICLES)
pool.push(particles.shift());
particle = pool.length ? pool.pop() : new Particle();
particle.init(x, y, random(5, 40));
particle.wander = random(0.5, 2.0);
particle.color = random(COLOURS);
...