JSFiddle - React, Tailwind, and code Playground
by William Green
HTML
<div id="projectContainer">
<div id="starSuperContainer">
<div id="starContainer"></div>
<div id="starFade"></div>
</div>
<div id="fireworksContainer"></div>
</div>
CSS
#projectContainer {
background-color:#333;
position:fixed;
top:0;
left:0;
right:0;
bottom:0;
}
html, body {
margin:0;
padding:0;
height: 100%;
width: 100%;
overflow: hidden;
}
#starSuperContainer {
width:100vw;
height:70vh;
position:relative;
}
#starContainer {
width:100%;
height:100%;
}
#starFade {
width:100%;
height:100%;
background: -webkit-linear-gradient(transparent, #333);
/* For Safari 5.1 to 6.0 */
background: -o-linear-gradient(transparent, #333);
/* For Opera 11.1 to 12.0 */
background: -moz-linear-gradient(transparent, #333);
/* For Firefox 3.6 to 15 */
background: linear-gradient(transparent, #333);
/* Standard syntax */
position:absolute;
top:0;
}
.star {
background-color:#fff;
border-radius:50%;
position:fixed;
}
.fireworkContainer {
/*width:20px;
height:20px;*/
margin-top:-4px;
margin-bottom:-4px;
position:absolute;
display:inline-block;
-o-transition:all 1s linear, opacity 2s linear;
-moz-transition:all 1s linear, opacity 2s linear;
-webkit-transition:all 1s linear, opacity 2s linear;
-ms-transition:all 1s linear, opacity 2s linear;
transition:all 1s linear, opacity 2s linear;
bottom:0;
border-radius:50%;
-webkit-filter:blur(1px);
-moz-filter:blur(1px);
-ms-filter:blur(1px);
-o-filter:blur(1px);
filter:blur(1px);
/*-webkit-box-shadow: 0 8px 6px -6px red;
-moz-box-shadow: 0 8px 6px -6px red;
box-shadow: 0 8px 6px -6px red;*/
}
.fireworkContainer * {
-o-transition:all .8s linear, opacity .1s linear;
-moz-transition:all .8s linear, opacity .1s linear;
-webkit-transition:all .8s linear, opacity .1s linear;
-ms-transition:all .8s linear, opacity .1s linear;
transition:all .8s linear, opaciyt .1s linear;
position:absolute;
width:0;
height:0;
-o-transform-origin:bottom center;
...
JavaScript
/*settings variables*/
var fireworkDimensions = 10; //make each firework 5px in width and height
var fireworkTransitionTime = 1000; //in milliseconds
var resizeTimer = false; //resize delay timer (not set)
var rayWidth = 2; //width of firework ray
var rayLength = 100; //length of firework ray
var fireworkRayPositions = [
[0, 3],
[10, 5],
[8, 6],
[5, 8],
[2, 8],
[2, 6],
[0, 4],
[0, 2],
[2, 2],
[4, 0],
[8, 2],
[10, 2]
]; //firework array positions in px format: bottom,right
//210
var fireworkCounter = 0;
var fireworkRayRotation = [0, -30, -60, -90, -120, -150, -180, -210, -240, 90, 60, 30];
window.addEventListener('load', function () {
initialize();
});
function initialize() {
fireworkTimers = [];
createStars();
createFireworks();
function createStars() {
var starContainer = document.getElementById('starContainer');
starContainer.innerHTML = '';
for (var i = 0; i != window.innerWidth; i++) {
var star = document.createElement('div');
star.className = 'star';
star.style.opacity = Math.random() * 0.5;
var randomDimensions = Math.floor(Math.random() * 4);
star.style.width = randomDimensions + 'px';
star.style.height = randomDimensions + 'px';
star.style.top = Math.floor(Math.random() * starContainer.offsetHeight - randomDimensions) + 'px';
star.style.left = Math.floor(Math.random() * starContainer.offsetWidth - randomDimensions) + 'px';
starContainer.appendChild(star);
}
}
function createFireworks() {
var fireworkContainer = document.getElementById('fireworksContainer');
fireworkContainer.innerHTML = '';
var numFireworks = Math.floor(window.innerWidth / fireworkDimensions);
var colors = ['#FFC47A', '#FF312D', '#5CC1FF', '#FF9137', '#FFCE1E'];
for (var i = 0; i != numFireworks; i++) {
var firework =...