1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > html5时间画布走动 javascript+HTML5 canvas绘制时钟功能示例

html5时间画布走动 javascript+HTML5 canvas绘制时钟功能示例

时间:2023-07-07 13:47:46

相关推荐

html5时间画布走动 javascript+HTML5 canvas绘制时钟功能示例

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

效果如下:

代码:

canvas绘制时钟

div{text-align:center;margin-top:250px;}

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);

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

感兴趣的朋友可使用在线HTML/CSS/JavaScript代码运行工具:/code/HtmlJsRun测试一下运行效果。

PS:这里再为大家推荐几款时间及日期相关工具供大家参考使用:

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。