利用html5的画布做数字钟

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>HTML5 Canvas指针时钟表特效 - 站长素材</title>
</head>
<body>
<center>
<canvas id="canvas" width="500" height="500"></canvas>
</center>
<script>
var can=document.getElementById("canvas");
var ctx=can.getContext("2d")
function timer(){
// ctx.save(); ctx.restore(); 是绘制图形不可少的 是保存和恢复画布的状态
ctx.clearRect(0,0,500,500)//清除画布
ctx.beginPath();
ctx.lineWidth=10;
ctx.strokeStyle="greenyellow";
ctx.arc(250,250,210,0,Math.PI*2); //画圆函数
ctx.stroke();
ctx.closePath();
//分钟时刻
for(var i = 0 ;i < 60 ;i++){
ctx.save();//保存之前的状态
ctx.beginPath();
ctx.translate(250,250);//改变坐标轴x y的起始位置 将原点设置成画布中间
ctx.rotate(i*6*Math.PI/180)//设置指针旋转
ctx.strokeStyle = '#000';
ctx.lineWidth = 4;
ctx.moveTo(0,-170);
ctx.lineTo(0,-185);
ctx.stroke();
ctx.closePath();
ctx.restore(); //恢复之前保存的绘图状态
}
//时针刻度
for(var i = 0; i < 12 ;i++){
ctx.save();
ctx.beginPath();
ctx.translate(250,250);
ctx.rotate(i*30*Math.PI/180);
ctx.strokeStyle="red";
ctx.lineWidth = 6;
ctx.moveTo(0,-160);
ctx.lineTo(0,-185);
ctx.stroke();
ctx.closePath();
ctx.restore();
}
//刻度
for(var i = 0; i < 12;i++){
ctx.save();
ctx.beginPath();
ctx.translate(250,250);
ctx.rotate(i*30*Math.PI/180);
ctx.font="18px 宋体";
ctx.fillText(i,-7,-135);
ctx.closePath();
ctx.restore();
}
var time = new Date();//获取当前时间
var h=time.getHours();//获取当前的时钟
var m=time.getMinutes();//获取当前分钟
var s=time.getSeconds();//获取当前秒钟
//时
ctx.save();
ctx.beginPath();
ctx.translate(250,250);
ctx.rotate(h*30*Math.PI/180); //让指针转 根据得到当前时间
ctx.strokeStyle = 'purple';
ctx.lineWidth = 8;
ctx.moveTo(0,10);
ctx.lineTo(0,-105);
ctx.stroke();
ctx.closePath();
ctx.restore();
//分
ctx.save();
ctx.beginPath();
ctx.translate(250,250);
ctx.rotate(m*6*Math.PI/180);
ctx.strokeStyle="deeppink";
ctx.lineWidth = 6;
ctx.moveTo(0,10);
ctx.lineTo(0,-120);
ctx.stroke();
ctx.closePath();
ctx.restore();
//秒钟
ctx.save();
ctx.beginPath();
ctx.translate(250,250);
ctx.rotate(s*6*Math.PI/180);
ctx.strokeStyle="red";
ctx.lineWidth = 4;
ctx.moveTo(0,10);
ctx.lineTo(0,-135);
ctx.stroke();
ctx.closePath();
ctx.restore();
}
timer();
setInterval(timer,1000);//每秒执行一次

</script>
</div>
</body>
</html>

转载于:https://www.cnblogs.com/hanling1103/p/9371961.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值