<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>钟表</title>
</head>
<body>
<canvas id="dial" style="width:800px; height:800px; margin:auto; position:absolute; z-index:0" width="800" height="800"></canvas>
<canvas id="pointer" style="width:800px; height:800px; margin:auto; position:absolute; z-index:9" width="800" height="800"></canvas>
<script type="text/javascript">
var tagDial = document.getElementById("dial");
var tagPointer = document.getElementById("pointer");
var center = { x: tagDial.clientWidth / 2, y: tagDial.clientHeight / 2 };
var r = 300;
var num = [12,1,2,3,4,5,6,7,8,9,10,11];
function drawDial() {
var context = tagDial.getContext("2d");
context.translate(center.x,center.y);
context.lineWidth = 2;
context.beginPath();
context.arc(0, 0, r, 0, 2 * Math.PI);
context.stroke();
context.beginPath();
context.arc(0, 0, 8, 0, 2 * Math.PI);
context.fill();
context.stroke();
context.font = "bold 22px Arial";
context.textAlign = "center";
context.textBaseline = "midden";
for (var i = 0; i < 60; i++) {
var x1 = Math.sin((i * 6 * Math.PI) / 180) * r * (0 == (i * 6) % 30 ? 0.9 : 0.95);
var y1 = Math.cos((i * 6 * Math.PI) / 180) * r * (0 == (i * 6) % 30 ? 0.9 : 0.95);
var x2 = Math.sin((i * 6 * Math.PI) / 180) * r;
var y2 = Math.cos((i * 6 * Math.PI) / 180) * r;
if (0 == (i * 6) % 30) {
var x3 = Math.sin((i * 6 * Math.PI) / 180) * r * 0.85;
var y3 = Math.cos((i * 6 * Math.PI) / 180) * r * 0.85;
context.fillText(num[(i * 6) / 30], x3 , -y3+7);
}
context.beginPath();
context.moveTo(x1, -y1);
context.lineTo(x2, -y2);
context.stroke();
}
}
function drawPointer() {
var context = tagPointer.getContext("2d");
var date = new Date();
var h = date.getHours();
var m = date.getMinutes();
var s = date.getSeconds();
h = h > 0 && h < 13 ? h : 0 == h ? 12 : h - 12;
context.clearRect(0, 0, tagPointer.width, tagPointer.height);
context.beginPath();
context.strokeStyle = "black";
context.lineWidth = 10;
context.moveTo(center.x, center.y);
var x1 = Math.sin((-h * 5 * 6 * Math.PI) / 180) * r * 0.5;
var y1 = Math.cos((-h * 5 * 6 * Math.PI) / 180) * r * 0.5;
context.lineTo(center.x-x1, center.y-y1);
context.stroke();
context.beginPath();
context.moveTo(center.x, center.y);
context.lineWidth = 6;
var x2 = Math.sin((-m * 6 * Math.PI) / 180) * r * 0.75;
var y2 = Math.cos((-m * 6 * Math.PI) / 180) * r * 0.75;
context.lineTo(center.x-x2, center.y-y2);
context.stroke();
context.beginPath();
context.strokeStyle = "red";
context.moveTo(center.x, center.y);
context.lineWidth = 2;
var x3 = Math.sin((-s * 6 * Math.PI) / 180) * r * 0.75;
var y3 = Math.cos((-s * 6 * Math.PI) / 180) * r * 0.75;
context.lineTo(center.x-x3, center.y-y3);
context.stroke();
}
drawDial();
drawPointer();
setInterval("drawPointer()", 1000);
</script>
</body>
</html>