首页 > 开发 > JS > 正文

javascript+HTML5 canvas绘制时钟功能示例

2024-05-06 16:50:56
字体:
来源:转载
供稿:网友

本文实例讲述了javascript+HTML5 canvas绘制时钟功能。分享给大家供大家参考,具体如下:

效果如下:

javascript,HTML5,canvas,时钟

代码:

<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title>www.vevb.com canvas绘制时钟</title> <style>  div{text-align:center;margin-top:250px;} </style></head><body><div> <canvas id="clock" width="300px" height="300px"></canvas></div><script> var dom=document.getElementById("clock"); var ctx=dom.getContext("2d"); var width=ctx.canvas.width; var height=ctx.canvas.height; var r=width/2; var rem=width/200; function drawBackground(){  ctx.save();  ctx.translate(r,r);//重新定义圆点到中心  ctx.beginPath();  ctx.lineWidth=10*rem;  ctx.arc(0,0,r-5*rem,0,Math.PI*2,false);//圆点坐标,起始角0,结束角2π,顺时针  ctx.stroke();  var hourNum=[3,4,5,6,7,8,9,10,11,12,1,2];//数组存小时数  ctx.font="18px Arial";  ctx.textAlign="center";  ctx.textBaseline="middle";  hourNum.forEach(function (num,i) {   var rad=2*Math.PI/12*i;//弧度   var x=(r-30*rem)*Math.cos(rad);   var y=(r-30*rem)*Math.sin(rad);   ctx.fillText(num,x,y);  });  for(var i=0;i<60;i++){//画圆点   var rad=2*Math.PI/60*i;   var x=(r-18*rem)*Math.cos(rad);   var y=(r-18*rem)*Math.sin(rad);   ctx.beginPath();   if(i%5==0){    ctx.fillStyle="#000";    ctx.arc(x,y,2,0,Math.PI*2,false);   }   else{    ctx.fillStyle="#ccc";    ctx.arc(x,y,2,0,Math.PI*2,false);   }   ctx.fill();  }  ctx.closePath(); } function drawHour(hour,minute){//时针  ctx.save();  ctx.beginPath();  var rad=2*Math.PI/12*hour;  var mrad=2*Math.PI/12/60*minute;  ctx.rotate(rad+mrad);  ctx.lineWidth=6*rem;  ctx.moveTo(0,10*rem);  ctx.lineTo(0,-r/2);  ctx.lineCap="round";  ctx.stroke();  ctx.restore(); } function drawMinute(minute,second){//分针  ctx.save();  ctx.beginPath();  var rad=2*Math.PI/60*minute;  var srad=2*Math.PI/60/60*second;  ctx.rotate(rad+srad);  ctx.lineWidth=3*rem;  ctx.moveTo(0,10*rem);  ctx.lineTo(0,-r+30*rem);  ctx.lineCap="round";  ctx.stroke();  ctx.restore(); } function drawSecond(second){//秒针  ctx.save();  ctx.beginPath();  ctx.fillStyle="#c14543";  var rad=2*Math.PI/60*second;  ctx.rotate(rad);  ctx.moveTo(-2*rem,20*rem);  ctx.lineTo(2*rem,20*rem);  ctx.lineTo(1*rem,-r+18*rem);  ctx.lineTo(-1*rem,-r+18*rem);  ctx.fill();  ctx.restore(); } function drawDot(){//画中心圆圈  ctx.beginPath();  ctx.fillStyle="#fff";  ctx.arc(0,0,3*rem,0,2*Math.PI,false);  ctx.fill(); } function draw(){  ctx.clearRect(0,0,width,height);  var now=new Date();  var hour=now.getHours();  var minute=now.getMinutes();  var second=now.getSeconds();  drawBackground();//背景  drawHour(hour,minute);//小时  drawMinute(minute,second);//分钟  drawSecond(second);//秒钟  drawDot();//中心圆点  ctx.restore(); } setInterval(draw,1000);</script></body></html>

其中的rem值是为了使canvas画布大小变化时时钟的样式能够保持

希望本文所述对大家JavaScript程序设计有所帮助。


注:相关教程知识阅读请移步到JavaScript/Ajax教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表