<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
canvas {
box-shadow: 0 0 10px paleturquoise;
}
</style>
</head>
<body>
<canvas id="canvas" width="500" height="500"></canvas>
<script type="text/javascript">
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
var center = {
x: 250,
y: 250
}
// 时针
var hourLine = {
width: "5",
length: 140,
color: "deeppink"
}
// 分针
var minLine = {
width: "3",
length: 160,
color: "yellow"
}
// 秒针
var secLine = {
width: "2",
length: 180,
color: "blue"
}
function drawLine(obj, deg) {
// var date = new Date();
// var currentDeg = date.getSeconds() * (Math.PI * 2 / 60);
ctx.strokeStyle = obj.color;
ctx.lineWidth = obj.width;
ctx.beginPath();
ctx.moveTo(center.x, center.y);
ctx.lineTo(center.x + obj.length * Math.sin(deg), center.y - obj.length * Math.cos(deg));
ctx.stroke();
}
// drawLine();
setInterval(function() {
// 1. 清屏
ctx.clearRect(0, 0, canvas.width, canvas.height);
// 2.背景
drawBac();
// 3. 画针
var date = new Date();
var hourDeg = date.getHours() * (Math.PI * 2 / 12);
var minDeg = date.getMinutes() * (Math.PI * 2 / 60);
var secDeg = date.getSeconds() * (Math.PI * 2 / 60);
drawLine(hourLine, hourDeg);
drawLine(minLine, minDeg);
drawLine(secLine, secDeg);
}, 1000);
function drawBac() {
ctx.strokeStyle = "deeppink";
// 小圆
ctx.beginPath();
ctx.arc(center.x, center.y, 200, 0, Math.PI * 2, false);
ctx.stroke();
// 大圆
ctx.beginPath();
ctx.arc(250, 250, 210, 0, Math.PI * 2, false);
ctx.stroke();
var deg = 0;
var deg1 = 0;
// 大刻度
for(var i = 0; i < 12; i++) {
deg += Math.PI * 2 / 12;
ctx.beginPath();
ctx.moveTo(250 + 180 * Math.cos(deg), 250 - 180 * Math.sin(deg));
ctx.lineTo(250 + 200 * Math.cos(deg), 250 - 200 * Math.sin(deg));
ctx.stroke();
// 小刻度
for (var j = 0; j < 4; j++) {
deg1 += Math.PI * 2 / 12 / 4;
ctx.beginPath();
ctx.moveTo(250 + 190 * Math.cos(deg1), 250 - 190 * Math.sin(deg1));
ctx.lineTo(250 + 200 * Math.cos(deg1), 250 - 200 * Math.sin(deg1));
ctx.stroke();
}
}
ctx.font = "12px DFWaWaSC-W5";
ctx.fillStyle = "mediumspringgreen";
deg = 0;
// 数字
for(var i = 1; i <= 12; i++) {
deg += Math.PI * 2 / 12;
ctx.font = "30px DFWaWaSC-W5";
ctx.fillStyle = "mediumspringgreen";
ctx.fillText(i, 240 + 160 * Math.sin(deg), 260 - 160 * Math.cos(deg));
}
}
</script>
</body>
</html>