使用HTML5 Canvas绘制动态时钟的JavaScript实现
作者:流萤时间:2026-10-22 09:09:07浏览:546
本文提供了一段基于HTML5 Canvas和JavaScript实现的简易动态时钟代码。通过获取Canvas上下文,利用arc方法绘制表盘,结合setInterval定时器每秒刷新,计算并绘制时、分、秒针及数字,展示了一个完整的客户端时钟特效实现方案。
Canvas时钟实现概述
本文分享了一个使用JavaScript实现的简易时钟特效的具体代码,供读者参考学习。

以下是实现该效果的核心JavaScript代码部分。
核心代码解析
var canvas = document.getElementById("clock");
var clock = canvas.getContext("2d");
function zhong() {
clock.save();
//开始画外层圆
clock.translate(200, 200);
clock.strokeStyle = 'black';
clock.lineWidth = 3;
clock.beginPath();
clock.arc(0, 0, 195, 0, 2 * Math.PI);
clock.stroke();
//时钟上的数字
var shuzi = [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 1, 2];
clock.font = "30px Arial";
clock.textAlign = "center";
clock.textBaseline = "middle";
shuzi.forEach(function(number, i) {
var rad = 2 * Math.PI / 12 * i;
var x = Math.cos(rad) * 180;
var y = Math.sin(rad) * 180;
clock.fillText(number, x, y);
});
// 小圆点
for(j = 0; j < 60; j++) {
var h = 2 * Math.PI / 60 * j;
var m = Math.cos(h) * 180;
var n = Math.sin(h) * 180;
clock.fillStyle = 'black';
clock.beginPath();
if(j % 5 === 0) {
continue;
}
clock.arc(m, n, 3, 0, 2 * Math.PI);
clock.fill();
}
}
function drawHour(hour,min) {
clock.save();
var rad = 2 * Math.PI / 12 * hour;
var red = 2 *Math.PI/12/60*min;
clock.rotate(rad+red);
clock.lineWidth = 10;
clock.lineCap = "round";
clock.beginPath();
clock.moveTo(0, 5);
clock.lineTo(0, -100);
clock.stroke();
clock.restore();
}
function drawmin(min) {
clock.save();
var rad = 2 * Math.PI / 60 * min;
clock.rotate(rad);
clock.lineWidth = 5;
clock.lineCap = "round";
clock.beginPath();
clock.moveTo(0, 10);
clock.lineTo(0, -150);
clock.stroke();
clock.restore();
}
function drawsec(sec) {
clock.save();
var rad = 2 * Math.PI / 60 * sec;
clock.rotate(rad);
clock.lineWidth = 2;
clock.lineCap = "round";
clock.strokeStyle = "red";
clock.beginPath();
clock.moveTo(0, 10);
clock.lineTo(0, -180);
clock.stroke();
clock.restore();
}
function dian() {
clock.fillStyle = "white";
clock.beginPath();
clock.arc(0, 0, 2, 0, 2 * Math.PI);
clock.fill();
}
function xuanzhuan() {
clock.clearRect(0,0,400,400);
zhong();
var now = new Date();
var hour = now.getHours();
var min = now.getMinutes();
var sec = now.getSeconds();
drawHour(hour,min);
drawmin(min);
drawsec(sec);
dian();
clock.restore();
}
xuanzhuan();
setInterval(xuanzhuan, 1000);
以上就是本文的全部内容,希望这段代码能对大家的学习有所帮助,同时也欢迎大家继续支持本站。
作者最新文章
JavaScript将图片转换为Base64编码的两种途径
2026-11-05 16:43:05
怎么在 Vue 或 React 项目中正确集成 animate.js
2026-11-05 10:23:38
JS注册事件:addEventListener基础语法与参数详解
2026-11-05 08:44:56
JSP和JS的区别:运行环境与服务端/客户端职责解析
2026-11-04 23:34:36
pdf.js 官方下载地址:GitHub Release 获取预编译包
2026-11-04 23:07:27
