如何通过Canvas+JS实现简易的时钟
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,今天就跟大家聊聊有关如何通过Canvas+JS实现简易的时钟,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。之前学习了下html5中的canva
千家信息网最后更新 2026年11月03日如何通过Canvas+JS实现简易的时钟
今天就跟大家聊聊有关如何通过Canvas+JS实现简易的时钟,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
之前学习了下html5中的canvas元素,为了练练手就实现了一个简易的时钟。时钟本身并不复杂,也没有使用图片进行美化,不过麻雀虽小五脏俱全,下面就与大家分享一下:
实现效果:
html代码:
Clock
JS代码:
var Canvas = {}; Canvas.cxt = document.getElementById('canvasId').getContext('2d'); Canvas.Point = function(x, y){ this.x = x; this.y = y; }; /*擦除canvas上的所有图形*/ Canvas.clearCxt = function(){ var me = this; var canvas = me.cxt.canvas; me.cxt.clearRect(0,0, canvas.offsetWidth, canvas.offsetHeight); }; /*时钟*/ Canvas.Clock = function(){ var me = Canvas, c = me.cxt, radius = 150, /*半径*/ scale = 20, /*刻度长度*/ minangle = (1/30)*Math.PI, /*一分钟的弧度*/ hourangle = (1/6)*Math.PI, /*一小时的弧度*/ hourHandLength = radius/2, /*时针长度*/ minHandLength = radius/3*2, /*分针长度*/ secHandLength = radius/10*9, /*秒针长度*/ center = new me.Point(c.canvas.width/2, c.canvas.height/2); /*圆心*/ /*绘制圆心(表盘中心)*/ function drawCenter(){ c.save(); c.translate(center.x, center.y); c.fillStyle = 'black'; c.beginPath(); c.arc(0, 0, radius/20, 0, 2*Math.PI); c.closePath(); c.fill(); c.stroke(); c.restore(); }; /*通过坐标变换绘制表盘*/ function drawBackGround(){ c.save(); c.translate(center.x, center.y); /*平移变换*/ /*绘制刻度*/ function drawScale(){ c.moveTo(radius - scale, 0); c.lineTo(radius, 0); }; c.beginPath(); c.arc(0, 0, radius, 0, 2*Math.PI, true); c.closePath(); for (var i = 1; i <= 12; i++) { drawScale(); c.rotate(hourangle); /*旋转变换*/ }; /*绘制时间(3,6,9,12)*/ c.font = " bold 30px impack" c.fillText("3", 110, 10); c.fillText("6", -7, 120); c.fillText("9", -120, 10); c.fillText("12", -16, -100); c.stroke(); c.restore(); }; /*绘制时针(h: 当前时(24小时制))*/ this.drawHourHand = function(h){ h = h === 0? 24: h; c.save(); c.translate(center.x, center.y); c.rotate(3/2*Math.PI); c.rotate(h*hourangle); c.beginPath(); c.moveTo(0, 0); c.lineTo(hourHandLength, 0); c.stroke(); c.restore(); }; /*绘制分针(m: 当前分)*/ this.drawMinHand = function(m){ m = m === 0? 60: m; c.save(); c.translate(center.x, center.y); c.rotate(3/2*Math.PI); c.rotate(m*minangle); c.beginPath(); c.moveTo(0, 0); c.lineTo(minHandLength, 0); c.stroke(); c.restore(); }; /*绘制秒针(s:当前秒)*/ this.drawSecHand = function(s){ s = s === 0? 60: s; c.save(); c.translate(center.x, center.y); c.rotate(3/2*Math.PI); c.rotate(s*minangle); c.beginPath(); c.moveTo(0, 0); c.lineTo(secHandLength, 0); c.stroke(); c.restore(); }; /*依据本机时间绘制时钟*/ this.drawClock = function(){ var me = this; function draw(){ var date = new Date(); Canvas.clearCxt(); drawBackGround(); drawCenter(); me.drawHourHand(date.getHours() + date.getMinutes()/60); me.drawMinHand(date.getMinutes() + date.getSeconds()/60); me.drawSecHand(date.getSeconds()); } draw(); setInterval(draw, 1000); }; }; var main = function(){ var clock = new Canvas.Clock(); clock.drawClock(); };代码中涉及到了一些简单的canvas元素API 大家google一下即可,
看完上述内容,你们对如何通过Canvas+JS实现简易的时钟有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。
时钟
长度
简易
代码
内容
变换
元素
分针
刻度
圆心
小时
弧度
时针
时间
秒针
表盘
复杂
麻雀虽小
五脏俱全
五脏
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
什么是科技互联网
广州为想互联网科技有限公司
云信互联网科技有限公司
互联网为科技
平安科技 互联网
广州宏创互联网科技
亿策互联网科技
艾特科技互联网
互联网科技有限公司 翻译
互联网系的金融科技公司
茂名市互联网科技产业园
福建科技产业互联网发展
注册互联网科技公司经营范围大全
区块链结合互联网科技
滨湖区互联网智能科技产品有哪些
每天都有哪些好的互联网科技
互联网领先科技宣传片
九思连强互联网电子科技有限公司
抖集互联网科技技术咨询
小牛互联网科技有限公司地址
上海互联网科技有限公司
互联网科技的发展
互联网科技大会
上海电发互联网科技有限公司
湖南诚度互联网科技有限公司
互联网科技和法律行业
互联网科技如何创业
互联网科技包装股份有限公司上市
神州科技互联网有限公司
互联网企业和网络科技有限公司