canvas示例 - 用canvas实现行走的闹钟

效果如图
canvas示例 - 用canvas实现行走的闹钟
文章图片

完整js

// js/clock.js// 获取绘图对象 // 获取绘图对象 表盘 var canvas = document.getElementById('canvas'); var context = canvas.getContext('2d'); // 获取绘图对象 表针 var p_canvas = document.getElementById('p_canvas'); var p_context = p_canvas.getContext('2d'); var height = 200, width = 200; // 画大圆 context.beginPath(); context.strokeStyle = "#009999"; context.arc(width / 2, height / 2, width / 2 - 1, 0, Math.PI * 2, true); context.stroke(); context.closePath(); // 画中间点 context.beginPath(); context.fillStyle = "#000"; context.arc(width / 2, height / 2, 3, 0, Math.PI * 2, true); context.fill(); context.closePath(); // 画小刻度 var angle = 0, radius = width / 2 - 4; for (var i = 0; i < 60; i++) { context.beginPath(); context.strokeStyle = "#000"; // 确认刻度的起始点 var x = width / 2 + radius * Math.cos(angle), y = height / 2 + radius * Math.sin(angle); context.moveTo(x, y); // 这里是用来将刻度的另一点指向中心点,并给予正确的角度 // PI是180度,正确的角度就是 angle+180度,正好相反方向 var temp_angle = Math.PI + angle; context.lineTo(x + 3 * Math.cos(temp_angle), y + 3 * Math.sin(temp_angle)); context.stroke(); context.closePath(); angle += 6 / 180 * Math.PI; }// 大刻度 angle = 0, radius = width / 2 - 4; context.textBaseline = 'middle'; context.textAlign = 'center'; context.lineWidth = 2; for (var i = 0; i < 12; i++) { var num = i + 3 > 12 ? i + 3 - 12 : i + 3; context.beginPath(); context.strokeStyle = "#FFD700"; var x = width / 2 + radius * Math.cos(angle), y = height / 2 + radius * Math.sin(angle); context.moveTo(x, y); var temp_angle = Math.PI + angle; context.lineTo(x + 8 * Math.cos(temp_angle), y + 8 * Math.sin(temp_angle)); context.stroke(); context.closePath(); // 大刻度文字 context.fillText(num, x + 16 * Math.cos(temp_angle), y + 16 * Math.sin(temp_angle)); angle += 30 / 180 * Math.PI; }function Pointer() { var p_type = [['#000', 70, 1], ['#ccc', 60, 2], ['red', 50, 3]]; function drwePointer(type, angle) { type = p_type[type]; angle = angle * Math.PI * 2 - 90 / 180 * Math.PI; var length = type[1]; p_context.beginPath(); p_context.lineWidth = type[2]; p_context.strokeStyle = type[0]; p_context.moveTo(width / 2, height / 2); p_context.lineTo(width / 2 + length * Math.cos(angle), height / 2 + length * Math.sin(angle)); p_context.stroke(); p_context.closePath(); } setInterval(function() { p_context.clearRect(0, 0, height, width); var time = new Date(); var h = time.getHours(); var m = time.getMinutes(); var s = time.getSeconds(); h = h > 12 ? h - 12 : h; h = h + m / 60; h = h / 12; m = m / 60; s = s / 60; drwePointer(0, s); drwePointer(1, m); drwePointer(2, h); }, 500); } var p = new Pointer();

【canvas示例 - 用canvas实现行走的闹钟】完整html
canvas 挂钟 - 锐客网 type="text/css"> canvas { position: absolute; top: 10px; left: 10px; } src="https://www.it610.com/article/js/clock.js" type="text/javascript">

    推荐阅读