JSFiddle - React, Tailwind, and code Playground
by mrienstra
HTML
<!--h1>Countdown Clock</h1-->
<div id="clockdiv">
<div>
<span class="days"></span>
<div class="smalltext">Days</div>
</div>
<div>
<span class="hours"></span>
<div class="smalltext">Hours</div>
</div>
<div>
<span class="minutes"></span>
<div class="smalltext">Minutes</div>
</div>
<div>
<span class="seconds"></span>
<div class="smalltext">Seconds</div>
</div>
<div>
<span class="all_seconds"></span>
<div class="smalltext">All Seconds</div>
</div>
</div>
CSS
html{
height: 100%;
}
body{
display: flex;
align-items: center;
justify-content: center;
height: 100%;
text-align: center;
background: #000;
font-family: sans-serif;
font-weight: 100;
}
h1{
color: #396;
font-weight: 100;
font-size: 40px;
margin: 40px 0px 20px;
}
#clockdiv{
display: inline-block;
font-family: sans-serif;
color: #aaa;
font-weight: 100;
text-align: center;
font-size: 30px;
}
#clockdiv > div{
margin: 10px;
padding: 10px;
border-radius: 3px;
background: #222;
display: inline-block;
}
#clockdiv div > span{
padding: 15px;
border-radius: 3px;
background: #111;
display: inline-block;
}
.smalltext{
padding-top: 5px;
font-size: 16px;
color: #444;
}
JavaScript
function getTimeRemaining(endtime) {
const total = Date.parse(endtime) - Date.parse(new Date());
const seconds = Math.floor((total / 1000) % 60);
const minutes = Math.floor((total / 1000 / 60) % 60);
const hours = Math.floor((total / (1000 * 60 * 60)) % 24);
const days = Math.floor(total / (1000 * 60 * 60 * 24));
return {
total,
days,
hours,
minutes,
seconds
};
}
function initializeClock(id, endtime) {
const clock = document.getElementById(id);
const daysSpan = clock.querySelector('.days');
const hoursSpan = clock.querySelector('.hours');
const minutesSpan = clock.querySelector('.minutes');
const secondsSpan = clock.querySelector('.seconds');
const allSecondsSpan = clock.querySelector('.all_seconds');
function updateClock() {
const t = getTimeRemaining(endtime);
daysSpan.innerHTML = -1 * t.days;
hoursSpan.innerHTML = ('0' + t.hours).slice(-2);
minutesSpan.innerHTML = ('0' + t.minutes).slice(-2);
secondsSpan.innerHTML = ('0' + t.seconds).slice(-2);
allSecondsSpan.innerHTML = (Math.abs(t.total) / 1000).toLocaleString();
if (t.total <= 0) {
clearInterval(timeinterval);
}
}
updateClock();
const timeinterval = setInterval(updateClock, 1000);
}
const deadline = new Date(Date.parse("January 1, 2021 00:00:00 PST"));
initializeClock('clockdiv', deadline);