效果如下:
代码如下:
<!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
相关文章:
网站制作的步骤包括,正确网址格式怎么写?
Android自定义listview布局实现上拉加载下拉刷新功能
建站主机如何安装配置?新手必看操作指南
网站视频怎么制作,哪个网站可以免费收看好莱坞经典大片?
,在苏州找工作,上哪个网站比较好?
开封网站制作公司,网络用语开封是什么意思?
海南网站制作公司有哪些,海口网是哪家的?
专业网站建设制作报价,网页设计制作要考什么证?
如何用狗爹虚拟主机快速搭建网站?
网站制作软件有哪些,制图软件有哪些?
成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?
可靠的网站设计制作软件,做网站设计需要什么样的电脑配置?
如何通过FTP服务器快速搭建网站?
c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】
合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?
高防服务器:AI智能防御DDoS攻击与数据安全保障
如何在阿里云购买域名并搭建网站?
网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?
免费公司网站制作软件,如何申请免费主页空间做自己的网站?
如何在VPS电脑上快速搭建网站?
建站之星安装步骤有哪些常见问题?
如何用免费手机建站系统零基础打造专业网站?
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
Android使用GridView实现日历的简单功能
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?
潍坊网站制作公司有哪些,潍坊哪家招聘网站好?
魔毅自助建站系统:模板定制与SEO优化一键生成指南
c# 在高并发场景下,委托和接口调用的性能对比
阿里云高弹*务器配置方案|支持分布式架构与多节点部署
建站之星客服服务时间及联系方式如何?
广州建站公司哪家好?十大优质服务商推荐
大学网站设计制作软件有哪些,如何将网站制作成自己app?
如何撰写建站申请书?关键要点有哪些?
如何制作算命网站,怎么注册算命网站?
如何快速启动建站代理加盟业务?
定制建站策划方案_专业建站与网站建设方案一站式指南
如何在IIS中新建站点并配置端口与物理路径?
如何快速搭建安全的FTP站点?
香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧
建站之星后台密码遗忘如何找回?
如何在腾讯云服务器上快速搭建个人网站?
油猴 教程,油猴搜脚本为什么会网页无法显示?
如何用搬瓦工VPS快速搭建个人网站?
如何在西部数码注册域名并快速搭建网站?
官网自助建站平台指南:在线制作、快速建站与模板选择全解析
黑客入侵网站服务器的常见手法有哪些?
如何快速搭建个人网站并优化SEO?
网站图片在线制作软件,怎么在图片上做链接?
义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?
重庆网站制作公司哪家好,重庆中考招生办官方网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。