JSFiddle - React, Tailwind, and code Playground
by Niklas Keller
HTML
<div id="clock">
<div id="h"></div>
<div id="m"></div>
<div id="s"></div>
</div>
CSS
html, body {
margin: 0;
padding: 0;
text-align: center;
}
#clock {
width: 100vmin;
height: 100vmin;
border-radius: 50%;
border: 1vmin solid #333;
position: relative;
box-shadow: 0 0 5vmin rgba(0, 0, 0, .3);
box-sizing: border-box;
margin: 0 auto;
transform: scale(.8);
}
#h, #m, #s {
top: 50vmin;
left: 50vmin;
position: absolute;
}
#h:before, #m:before, #s:before {
content:"";
position: absolute;
left: 100%;
height: 0;
box-shadow: 0 0 2vmin rgba(0,0,0,.2);
border-radius: 50%;
}
#h:before {
width: 25vmin;
}
#m:before {
width: 35vmin;
}
#s:before {
width: 45vmin;
}
#h:before {
background: black;
height: 4vmin;
transform: translateY(-2vmin);
}
#m:before {
background: black;
height: 2vmin;
transform: translateY(-1vmin);
}
#s:before {
background: red;
height: 2vmin;
transform: translateY(-1vmin);
}
JavaScript
var h = document.getElementById('h');
var m = document.getElementById('m');
var s = document.getElementById('s');
setInterval(function () {
refreshClock();
}, 1000);
function refreshClock() {
var time = new Date;
deg = time.getSeconds() * 6 - 90;
deg = time.getSeconds() * 6 - 90;
s.style.webkitTransform = s.style.MozTransform = s.style.msTransform = s.style.transform = "rotate(" + deg + "deg)";
deg = time.getMinutes() * 6 - 90;
m.style.webkitTransform = m.style.MozTransform = m.style.msTransform = m.style.transform = "rotate(" + deg + "deg)";
deg = time.getHours() % 12 * 30 - 90;
h.style.webkitTransform = h.style.MozTransform = h.style.msTransform = h.style.transform = "rotate(" + deg + "deg)";
}
window.onload = function () {
refreshClock();
};