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 =...