ugly-clock/index.html

98 lines
2.1 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<title>ugly clock</title>
<style>
#container {
margin: 0 auto;
width: 100%;
text-align: center;
}
</style>
<script>
var canvas, ctx, clockWidth, centerX, centerY;
function drawClockFace() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.beginPath();
ctx.arc(centerX, centerY, 8, 0, 2 * Math.PI, false);
ctx.fillStyle= "black";
ctx.fill();
ctx.closePath();
ctx.strokeStyle= "black";
for (var i= 0; i < 60; i++) {
ctx.save();
ctx.beginPath();
ctx.translate(centerX, centerY);
ctx.rotate(i * Math.PI / 30);
ctx.translate(0, -clockWidth / 2);
if ((i % 5) == 0) {
ctx.moveTo(0, 0);
ctx.lineWidth= 4;
ctx.lineTo(0, 10);
} else {
ctx.moveTo(0, 2);
ctx.lineWidth= 1;
ctx.lineTo(0, 7);
}
ctx.stroke();
ctx.restore();
}
} // drawClockFace()
function drawHand(length, angle) {
ctx.save();
ctx.beginPath();
ctx.translate(centerX, centerY);
ctx.rotate(Math.PI * (angle - 180) / 180);
ctx.moveTo(0, 0);
ctx.lineTo(0, length);
ctx.stroke();
ctx.restore();
} // drawHand(.,.)
function onDrawTime() {
drawClockFace();
var date= new Date();
var hours= date.getHours() % 12;
var minutes= date.getMinutes();
var seconds= date.getSeconds();
ctx.strokeStyle= "rgb(0, 0, 255)";
ctx.lineWidth= 6;
drawHand(clockWidth / 3.5, (hours + (minutes / 60)) * 30);
ctx.strokeStyle= "rgba(0, 255, 0, 0.7)";
ctx.lineWidth= 4;
drawHand(clockWidth / 2.2, minutes * 6);
ctx.strokeStyle= "red";
ctx.lineWidth= 1;
drawHand(clockWidth/2, seconds * 6);
} // onDrawTime()
function initializeClock() {
canvas= document.getElementById("analog_clock");
clockWidth= Math.min(canvas.width, canvas.height) - 10;
ctx= canvas.getContext("2d");
centerX= canvas.width / 2;
centerY= canvas.height / 2;
ctx.lineCap= "round";
onDrawTime();
setInterval(onDrawTime, 1000);
} // initializeClock()
onload= initializeClock;
</script>
</head>
<body>
<div id="container">
<h1>ugly clock lmao</h1>
<canvas id="analog_clock" width="160" height="160">
Sorry, canvas is not supported in this browser.
</canvas>
</div>
</body>
</html>