<!-- tsParticles from https://particles.matteobruni.it/ -->
<!-- tsParticles container -->
<div id="tsparticles"></div>
<!-- stats - count particles -->
<div class="count-particles"><span class="js-count-particles">--</span> particles </div>
/* ---- reset ---- */
body {
margin: 0;
font: normal 75% Arial, Helvetica, sans-serif;
}
canvas {
display: block;
vertical-align: bottom;
}
/* ---- tsparticles container ---- */
#tsparticles {
position: absolute;
width: 100%;
height: 100%;
background-color: #ababab;
background-image: url("");
background-repeat: no-repeat;
background-size: cover;
background-position: 50% 50%;
}
/* ---- stats.js ---- */
.count-particles {
background: #000022;
position: absolute;
top: 48px;
left: 0;
width: 80px;
color: #13e8e9;
font-size: 0.8em;
text-align: left;
text-indent: 4px;
line-height: 14px;
padding-bottom: 2px;
font-family: Helvetica, Arial, sans-serif;
font-weight: bold;
}
.js-count-particles {
font-size: 1.1em;
}
#stats,
.count-particles {
-webkit-user-select: none;
margin-top: 5px;
margin-left: 5px;
}
#stats {
border-radius: 3px 3px 0 0;
overflow: hidden;
}
.count-particles {
border-radius: 0 0 3px 3px;
}
tsParticles.load("tsparticles", {
detectRetina: true,
fpsLimit: 60,
interactivity: {
detectsOn: "canvas",
events: {
onClick: {
enable: false,
mode: "repulse"
},
onDiv: {
elementId: "repulse-div",
enable: false,
mode: "repulse"
},
onHover: {
enable: false,
mode: "repulse",
parallax: {
enable: false,
force: 60,
smooth: 10
}
},
resize: true
},
modes: {
bubble: {
distance: 400,
duration: 2,
opacity: 0.8,
size: 40,
speed: 3
},
connect: {
distance: 80,
lineLinked: {
opacity: 0.5
},
radius: 60
},
grab: {
distance: 400,
lineLinked: {
opacity: 1
}
},
push: {
quantity: 4
},
remove: {
quantity: 2
},
repulse: {
distance: 200,
duration: 0.4
}
}
},
particles: {
color: {
value: "#ffffff"
},
lineLinked: {
blink: false,
color: "#000",
consent: false,
distance: 150,
enable: false,
opacity: 0,
width: 0
},
rotate: {
value: 0,
random: false,
direction: "clockwise",
animation: {
enable: false,
speed: 5,
sync: false
}
},
move: {
attract: {
enable: false,
rotateX: 600,
rotateY: 1200
},
bounce: false,
direction: "bottom",
enable: true,
outMode: "out",
random: true,
speed: 30,
straight: true
},
number: {
density: {
enable: true,
area: 800
},
limit: 0,
value: 200
},
opacity: {
animation: {
enable: false,
minimumValue: 0.1,
speed: 1,
sync: false
},
random: false,
value: 0.5
},
shape: {
character: {
fill: false,
font: "Verdana",
style: "",
value: "*",
weight: "400"
},
image: [],
polygon: {
nb_sides: 5
},
stroke: {
color: "#efefefee",
width: 1
},
type: "line"
},
size: {
animation: {
enable: false,
minimumValue: 0.1,
speed: 40,
sync: false
},
random: false,
value: 5
}
},
polygon: {
draw: {
enable: false,
lineColor: "#ffffff",
lineWidth: 0.5
},
move: {
radius: 10
},
scale: 1,
type: "none",
url: ""
}
});
var stats = new Stats();
stats.setMode(0);
stats.domElement.style.position = "absolute";
stats.domElement.style.left = "0px";
stats.domElement.style.top = "0px";
document.body.appendChild(stats.domElement);
var count_particles = document.querySelector(".js-count-particles");
var update = function () {
stats.begin();
stats.end();
if (tsParticles.domItem(0).particles.array) {
count_particles.innerText = tsParticles.domItem(0).particles.array.length;
}
requestAnimationFrame(update);
};
requestAnimationFrame(update);
This Pen doesn't use any external CSS resources.