Today I want to show you how can you create a pure CSS clock without any Javascript.
First, What Is CSS Animation?
CSS animation is a proposed module for Cascading Style Sheets that allows designers and developers to add animations by editing the CSS code of their websites.
Let's jump to the code:
<div class="clock">
<div class="twelve"></div>
<div class="three"></div>
<div class="six"></div>
<div class="nine"></div>
<div class="center"></div>
<div class="hour"></div>
<div class="minute"></div>
<div class="second"></div>
</div>
And little bit of CSS:
body {
background-color: #0a192f;
}
.clock {
position: relative;
height: 200px;
width: 200px;
background: white;
box-sizing: border-box;
border-radius: 100%;
border: 20px solid #ffde64;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: auto;
}
.clock .twelve {
position: absolute;
width: 6px;
height: 8px;
background: #262626;
left: 0;
right: 0;
margin: 0 auto;
}
.clock .three {
position: absolute;
width: 8px;
height: 3px;
background: #262626;
top: 0;
bottom: 0;
right: 0;
margin: auto 0;
}
.clock .six {
position: absolute;
width: 6px;
height: 8px;
background: #262626;
left: 0;
right: 0;
bottom: 0;
margin: 0 auto;
}
.clock .nine {
position: absolute;
width: 8px;
height: 3px;
background: #262626;
top: 0;
bottom: 0;
left: 0;
margin: auto 0;
}
.clock .center {
height: 6px;
width: 6px;
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
margin: auto;
background: #262626;
border-radius: 100%;
}
.clock .hour {
width: 3px;
height: 100%;
position: absolute;
left: 0;
right: 0;
margin: 0 auto;
animation: time 60s infinite linear;
}
.clock .hour:before {
position: absolute;
content: "";
background: #262626;
height: 60px;
width: 3px;
top: 30px;
}
.clock .minute {
width: 1px;
height: 100%;
position: absolute;
left: 0;
right: 0;
margin: 0 auto;
animation: time 30s infinite linear;
}
.clock .minute:before {
position: absolute;
content: "";
background: #262626;
height: 40px;
width: 1px;
top: 50px;
}
.clock .second {
width: 2px;
height: 100%;
position: absolute;
left: 0;
right: 0;
margin: 0 auto;
animation: time 15s infinite linear;
}
.clock .second:before {
position: absolute;
content: "";
background: #fd1111;
height: 45px;
width: 2px;
top: 45px;
}
@keyframes time {
to {
transform: rotate(360deg);
}
}
This is our result:
Thank you all.
Top comments (4)
Very cool! I've been fascinated with CSS clocks lately and I am especially impressed with Nixie clocks.
I wanted to re-create the Nixie aesthetic from the 50s to 70s.
A Nixie clock displays time using glass tubes filled with neon gas, where numbers glow orange-red. Each digit needs its own tube containing stacked metal numbers. Popular in the 1950s-70s, these high-voltage displays are now mostly collectibles,
prized for their retro-futuristic aesthetic.
You can check it out at gnixie.websitescaffolding.com
This is wonderful
Thanks
Thank you. Your article helped me significantly with my homework. I couldn’t figure out how to make the clock hands rotate in the center.