html画表盘 随时间转动,Html5画钟表盘/指针实时跳动
发布日期:2021-10-21 14:21:33 浏览次数:2 分类:技术文章

本文共 2380 字,大约阅读时间需要 7 分钟。

Clock in canvas

drawCircle(ctx, point, r);varclockPointer=$(‘.clockPointer‘, container).get(0);varctxPointer=clockPointer.getContext(‘2d‘);varrun= function() {

drawPointer(ctxPointer, point, r,newDate());

requestAnimFrame(run);

}

run();

})functiondrawCircle(ctx, point, r) {

ctx.beginPath();

ctx.arc(point.X, point.Y, r,0, Math.PI* 2,true);

ctx.stroke();

ctx.beginPath();

ctx.arc(point.X, point.Y,4,0, Math.PI* 2,true);

ctx.fillStyle= "#ccc";

ctx.fill();

ctx.closePath();for(vari= 0; i< 60; i++) {

drawScale(ctx, point, r,5, i);

}

}functiondrawScale(ctx, point, r, len, scale) {varangle= 360 *scale/ 60 * 2 *Math.PI/ 360

if(scale% 5 == 0) {

len=len+ 3ctx.lineWidth= 3;

}else{

ctx.lineWidth= 1;

}varsX=point.X-(r-len)*Math.sin(angle);varsY=point.Y-(r-len)*Math.cos(angle);vareX=point.X-r*Math.sin(angle);vareY=point.Y-r*Math.cos(angle);

ctx.beginPath();

ctx.strokeStyle= "#ccc";

ctx.moveTo(sX, sY);

ctx.lineTo(eX, eY);

ctx.stroke();

ctx.closePath();

}functiondrawPointer(ctx, point, r, time) {

ctx.clearRect(0,0, ctx.canvas.width, ctx.canvas.height);varhours=time.getHours();varminutes=time.getMinutes();varseconds=time.getSeconds();varminSec=time.getMilliseconds();varangleS= 2 *Math.PI*(60 * 1000 -seconds* 1000 -minSec)/(60 * 1000);varesX=point.X-(r- 5)*Math.sin(angleS);varesY=point.Y-(r- 5)*Math.cos(angleS);vareSec={ X: esX, Y: esY };

drawLine(ctx, point, eSec,1);varangleM= 2 *Math.PI*(60 * 60 -minutes* 60 -seconds)/(60 * 60);varemX=point.X-(r- 10)*Math.sin(angleM);varemY=point.Y-(r- 10)*Math.cos(angleM);vareMinu={ X: emX, Y: emY };

drawLine(ctx, point, eMinu,2);varangleH= 2 *Math.PI*((24 * 60 * 60 -hours* 60 * 60 -minutes* 60 -seconds)%(12 * 60 * 60))/(12 * 60 * 60);varehX=point.X-(r- 15)*Math.sin(angleH);varehY=point.Y-(r- 15)*Math.cos(angleH);vareHour={ X: ehX, Y: ehY };

drawLine(ctx, point, eHour,3);

}functiondrawLine(ctx, pointS, pointE, lineWidth) {

ctx.lineWidth=lineWidth;

ctx.beginPath();

ctx.strokeStyle= "#808080";

ctx.moveTo(pointS.X, pointS.Y);

ctx.lineTo(pointE.X, pointE.Y);

ctx.stroke();

ctx.closePath();

}

window.requestAnimFrame=(function() {returnwindow.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||

function(run) {

window.setTimeout(run,16);

};

})();

/*background: orange;*/margin:0 auto;position:relative;

}canvas{position:absolute;

}

转载地址:https://blog.csdn.net/weixin_28875613/article/details/117863754 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:ajaxpro post html,轻松实现无刷新三级联动菜单[vs2005与ajaxpro]_ajax教程
下一篇:在HTML中rotate属性,Css3属性RotateX的使用

发表评论

最新留言

很好
[***.229.124.182]2024年04月07日 02时56分57秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章