
Hello Friends, today in this blog you’ll learn how to create Analog Clock using HTML, CSS3 & JavaScript.
Do you know Javascript ?? In this tutorial we’ll create Analog clock using JavaScript ..don’t worry if you’re a beginner and know basic Javascript then after watching our tutorial you can easily create a Analog Clock. Using CSS we’ll design the layout of the analog clock and for functioning we’ll use Javascript.
Video Tutorial of Analog Clock Using JavaScript
In the video tutorial you’ve seen that we don’t write so much HTML & CSS…we’ve create this project using only JavaScript. In HTML we can only create a circle using canvas tag and give it some design using CSS like color, padding, margin, width, height & positioning and they all are basic properties using in CSS. After that we can write the Javascript code, we use some simple formulas to calculate the clock radius. When you watch the tutorial you can understand the concept more easily.
So, enjoy the tutorial & learn something new today 🙂
Analog Clock Using Only JavaSCript [ SOURCE CODE ]
First, create an HTML file with the name of index.html and paste the given codes in your HTML file. Remember, you’ve to create a file with .html extension.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link rel="stylesheet" href="clock.css">
<title>Analogue Clock</title>
</head>
<body>
<canvas id="canvas" width="400" height="400"></canvas>
<script src="clock.js"></script>
</body>
</html>
Second, create a CSS file with the name of style.css and paste the given codes in your CSS file. Remember, you’ve to create a file with .css extension.
body {
background-color: #1b1b1b;
margin: 0;
padding: 0;
}
#canvas {
margin-left: 470px;
margin-top: 110px;
}
Third, create a JavaScript file with the name of script.js and paste the given codes in your Javascript file. you’ve to create a file with .js extension.
//create a canvas object fro HTML element
var canvas = document.getElementById('canvas');
//create a 2d drawing object
var ctx = canvas.getContext('2d');
//calculate the clock radius by using the height
var radius = canvas.height / 2;
//remap the x and y axis to the center of the canvas
ctx.translate(radius, radius);
//reduce clock radius by 90%
radius = radius * 0.90;
setInterval(drawClock, 1000); //run the drawClock function every second.
function drawClock(){
drawFace(ctx, radius);
drawNumbers(ctx, radius);
drawTime(ctx, radius);
}
function drawFace(ctx, radius){
var grad;
//draw white circle for the face
ctx.beginPath();
ctx.arc(0,0,radius,0,2*Math.PI);
ctx.fillStyle = "White";
ctx.fill();
// create a radial gradient (inner, middle, and outer edge of clock)
grad = ctx.createRadialGradient(0,0,radius*0.95, 0,0,radius*1.05);
grad.addColorStop(0, '#333');
grad.addColorStop(0.5, 'white');
grad.addColorStop(1, '#333');
//define gradient as stroke style
ctx.strokeStyle = grad;
ctx.lineWidth = radius*0.1;
ctx.stroke();
//draw the center of the clock
ctx.beginPath();
ctx.arc(0,0, radius*0.1,0,2*Math.PI);
ctx.fillStyle = '#333';
ctx.fill();
}
function drawNumbers(ctx, radius) {
var ang;
var num;
ctx.font = radius*0.15 + "px arial"; //set font at 15% of radius
ctx.textBaseline = "middle"; //set text alignment to middle
ctx.textAlign = "center"; //set text alignment to center
for(num=1; num < 13; num++){ //calculate the print position for each number
ang = num *Math.PI /6;
ctx.rotate(ang);
ctx.translate(0, -radius*0.85);
ctx.rotate(-ang);
ctx.fillText(num.toString(), 0, 0);
ctx.rotate(ang);
ctx.translate(0, radius*0.85);
ctx.rotate(-ang);
}
}
function drawTime(ctx, radius){
var now = new Date();
var hour = now.getHours();
var minute = now.getMinutes();
var second = now.getSeconds();
//hour
hour = hour%12;
//calculate angle of hour hand
hour = (hour*Math.PI/6)+(minute*Math.PI/(6*60))+(second*Math.PI/(360*60));
//make hour hand 50% of canvas's radius
drawHand(ctx, hour, radius*0.5, radius*0.07);
//minute
//calculate angle of minute hand
minute=(minute*Math.PI/30)+(second*Math.PI/(30*60));
//make minute hand 80% of canvas's radius
drawHand(ctx, minute, radius*0.8, radius*0.07);
//second
//calculate angle of second hand
second=(second*Math.PI/30);
//make second hand 90% of canvas's radius
drawHand(ctx, second, radius*0.9, radius*0.02);
}
function drawHand(ctx, pos, length, width){
ctx.beginPath();
ctx.lineWidth = width;
ctx.lineCap = "round";
ctx.moveTo(0,0);
ctx.rotate(pos);
ctx.lineTo(0, -length);
ctx.stroke();
ctx.rotate(-pos);
}
SUBSCRIBE TO OUR YOUTUBE CHANNEL FOR MORE SUCH AMAZING TUTORIALS !!!
- Mastering Data Structures & Algorithms: Your Ultimate Roadmap to Success - July 3, 2023
- A Beginner’s Guide to Machine Learning: Key Concepts and Applications - June 28, 2023
- Web Development: A Beginner’s Guide to Getting Started - June 24, 2023
0 Comments