效果如下:
代码如下:
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width,initial-scale=1"/>
<title>canvas clock</title>
<style type="text/css">
div{
text-align: center;
margin-top: 250px;
}
#clock{
border: 1px solid #ccc;
}
</style>
</head>
<body>
<div>
<canvas id="clock" height="200px" width="200px"></canvas>
</div>
<script type="text/javascript">
var dom=document.getElementById("clock");
var ctx=dom.getContext("2d");
var width=ctx.canvas.width;
var heigth=ctx.canvas.height;
var r=width/2;
//描绘时分秒小数和小数点
function drawBackground(){
ctx.save();
ctx.translate(r,r); //中心原点位置
ctx.beginPath(); //起始位置
ctx.lineWidth=10;
//圆
ctx.arc(0,0,r-5,0,2*Math.PI,false);
ctx.stroke();
var hourNumbers=[3,4,5,6,7,8,9,10,11,12,1,2];
ctx.font="18px Arial";
ctx.textAlign="center";
ctx.textBaseline="middle";
hourNumbers.forEach(function(number,i){
var rad=2*Math.PI/12*i;
var x=Math.cos(rad)*(r-30);
var y=Math.sin(rad)*(r-30);
ctx.fillText(number,x,y);
});
for (var i=0;i<60;i++) {
var rad=2*Math.PI/60*i;
var x=Math.cos(rad)*(r-18);
var y=Math.sin(rad)*(r-18);
ctx.beginPath();
if(i%5===0){
ctx.fillStyle="#000";
ctx.arc(x,y,2,2*Math.PI,false);
}else{
ctx.fillStyle="#ccc";
ctx.arc(x,y,2,2*Math.PI,false);
}
ctx.fill();
}
}
//描绘时针
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;
ctx.lineCap="round";
ctx.moveTo(0,10);
ctx.lineTo(0,-r/2);
ctx.stroke();
ctx.restore();
}
//描绘分针
function drawMinute(minute){
ctx.save();
ctx.beginPath();
var rad=2*Math.PI/60*minute;
ctx.rotate(rad);
ctx.lineWidth=3;
ctx.lineCap="round";
ctx.moveTo(0,10);
ctx.lineTo(0,-r+30);
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,20);
ctx.lineTo(2,20);
ctx.lineTo(1,-r+18);
ctx.lineTo(-1,-r+18)
ctx.fill();
ctx.restore();
}
//中间固定园点
function drawDot(){
ctx.beginPath();
ctx.fillStyle="#fff";
ctx.arc(0,0,3,0,2*Math.PI,false);
ctx.fill();
}
function draw(){
ctx.clearRect(0,0,width,heigth);
var now=new Date();
var hour=now.getHours();
var minute=now.getMinutes();
var second=now.getSeconds();
drawBackground();
drawHour(hour,minute);
drawMinute(minute);
drawSecond(second);
drawDot();
ctx.restore();
}
draw();
setInterval(draw,1000)
</script>
</body>
</html>
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
# canvas
# 绘制时钟
# js Canvas绘制圆形时钟效果
# html5 canvas js(数字时钟)实例代码
# javascript结合Canvas 实现简易的圆形时钟
# JS+Canvas绘制时钟效果
# JavaScript html5 canvas绘制时钟效果(二)
# js Canvas实现圆形时钟教程
# JavaScript学习小结之使用canvas画“哆啦A梦”时钟
# canvas仿iwatch时钟效果
# body
# ccc
# solid
# height
# id
# top
# margin
# div
# border
# px
# script
# function
# heigth
# getContext
# translate
# save
# drawBackground
# dom
# var
# javascript
相关文章:
如何在新浪SAE免费搭建个人博客?
建站之星如何保障用户数据免受黑客入侵?
深圳网站制作平台,深圳市做网站好的公司有哪些?
定制建站方案优化指南:企业官网开发与建站费用解析
如何用已有域名快速搭建网站?
制作网站的网址是什么,请问后缀为.com和.com.cn还有.cn的这三种网站是分别是什么类型的网站?
如何在建站之星网店版论坛获取技术支持?
建站之星如何实现PC+手机+微信网站五合一建站?
教学网站制作软件,学习*后期制作的网站有哪些?
php8.4新语法match怎么用_php8.4match表达式替代switch【方法】
怎么将XML数据可视化 D3.js加载XML
网站制作软件免费下载安装,有哪些免费下载的软件网站?
公司网站制作价格怎么算,公司办个官网需要多少钱?
建站之星安装路径如何正确选择及配置?
网站制作模板下载什么软件,ppt模板免费下载网站?
制作充值网站的软件,做人力招聘为什么要自己交端口钱?
北京网站制作的公司有哪些,北京白云观官方网站?
如何获取上海专业网站定制建站电话?
网站图片在线制作软件,怎么在图片上做链接?
如何快速搭建高效简练网站?
建站之星×万网:智能建站系统+自助建站平台一键生成
如何通过VPS搭建网站快速盈利?
广州美橙建站如何快速搭建多端合一网站?
黑客入侵网站服务器的常见手法有哪些?
网站制作公司广州有几家,广州尚艺美发学校网站是多少?
建站之星上传入口如何快速找到?
微信小程序 input输入框控件详解及实例(多种示例)
如何解决ASP生成WAP建站中文乱码问题?
齐河建站公司:营销型网站建设与SEO优化双核驱动策略
公司网站建设制作费用,想建设一个属于自己的企业网站,该如何去做?
如何在阿里云虚拟服务器快速搭建网站?
如何快速生成ASP一键建站模板并优化安全性?
中山网站制作网页,中山新生登记系统登记流程?
公司网站制作费用多少,为公司建立一个网站需要哪些费用?
建站主机如何选?性能与价格怎样平衡?
深入理解Android中的xmlns:tools属性
C#如何序列化对象为XML XmlSerializer用法
如何处理“XML格式不正确”错误 常见XML well-formed问题解决方法
魔方云NAT建站如何实现端口转发?
h5在线制作网站电脑版下载,h5网页制作软件?
网站制作费用多少钱,一个网站的运营,需要哪些费用?
如何优化Golang Web性能_Golang HTTP服务器性能提升方法
安云自助建站系统如何快速提升SEO排名?
已有域名如何快速搭建专属网站?
,怎么用自己头像做动态表情包?
电商网站制作公司有哪些,1688网是什么意思?
北京制作网站的公司,北京铁路集团官方网站?
建站之星安装后界面空白如何解决?
道歉网站制作流程,世纪佳缘致歉小吴事件,相亲网站身份信息伪造该如何稽查?
番禺网站制作公司哪家值得合作,番禺图书馆新馆开放了吗?
*请认真填写需求信息,我们会在24小时内与您取得联系。