In this article I will show you how to create a working Digital Clock using CSS and JavaScript.
Lets start by creating a index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="style.css">
<title>Document</title>
</head>
<body>
<div class="clock">
<span>
<!-- this text will be updated using JS -->
12:23:01 PM
</span>
</div>
<script src="main.js"></script>
</body>
</html>
And now style it using style.css
*{
margin: 0;
padding: 0;
}
html, body{
height: 100%;
}
body{
display: flex;
justify-content: center;
align-items: center;
background-color: rgb(26, 25, 25);
}
.clock{
padding: .75em;
background-color: rgb(26, 25, 25);
border-radius: 5px;
font-family: Arial, Helvetica, sans-serif;
font-weight: bold;
font-size: 2em;
position: relative;
color: transparent;
}
.clock span{
background: linear-gradient(135deg, rgb(255, 145, 0), rgb(255, 0, 221), blue);
background-clip: text;
-webkit-background-clip: text;
}
.clock::before, .clock::after{
content: "";
display: block;
width: 108%;
height: 120%;
background-image: linear-gradient(135deg, rgb(255, 145, 0), rgb(255, 0, 221), blue);
position: absolute;
top: -10%;
left: -4%;
z-index: -1;
border-radius: 5px;
}
.clock::after{
filter: blur(5px);
}
Now if you open it up in a browser it should look like this
Now we just have to updated the text using JS.
In our main.js JavaScript file let's create a function that will get the current time.
const clock = document.querySelector('.clock span')
function updateClock() {
// creating a new date object
const now = new Date()
// getting the current hour
let hours = now.getHours()
// getting the current minute
let minutes = now.getMinutes()
// getting the current second
let seconds = now.getSeconds()
// getting the AM/PM
let am_pm = hours >= 12 ? 'PM' : 'AM'
// converting 24 hours format to 12 hours
if(hours > 12) hours -= 12
// adding a zero in front of the times
hours = hours < 10 ? '0' + hours : hours
minutes = minutes < 10 ? '0' + minutes : minutes
seconds = seconds < 10 ? '0' + seconds : seconds
console.log(hours, minutes, seconds, am_pm);
}
updateClock()
Now instead of console logging them we simply have to update the text of our span and them call the updateClock
function every seconds
const clock = document.querySelector('.clock span')
function updateClock() {
const now = new Date()
let hours = now.getHours()
let minutes = now.getMinutes()
let seconds = now.getSeconds()
let am_pm = hours >= 12 ? 'PM' : 'AM'
if(hours > 12) hours -= 12
hours = hours < 10 ? '0' + hours : hours
minutes = minutes < 10 ? '0' + minutes : minutes
seconds = seconds < 10 ? '0' + seconds : seconds
// displaying the time
clock.innerHTML = `${hours}:${minutes}:${seconds} ${am_pm}`
}
// calling the function every second
setInterval(updateClock, 1000)
And its that easy.
Hey did I earned a coffee from you? Buy Me A Coffee
Make sure you checkout my other articles and YouTube channel