js Canvas绘制圆形时钟教程
发布时间 - 2026-01-10 22:53:33 点击率:次本文实例为大家分享了Canvas绘制圆形时钟的具体代码,供大家参考,具体内容如下
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>canvas-clock</title>
</head>
<body>
<canvas id="canvas" width="500px" height="500px">
你的浏览器不支持该元素!赶紧下载最新版本浏览器或使用其他浏览器!
</canvas>
<script>
//获取到canvas元素
var canvas = document.getElementById('canvas');
//获取canvas中的画图环境
var context = canvas.getContext('2d');
//时钟的大小
function drowClock(){
//钟表的大小:初始值设置
var clockDimensions = 150;
//清理当前画布,以便后期绘制
context.clearRect(0,0,canvas.width,canvas.height);
//绘制表盘
context.beginPath(); //开启新路径
context.lineWidth = clockDimensions/15;
context.strokeStyle = "#A7C0DC";
//绘制表盘圆圈
context.arc(canvas.width/2,canvas.height/2,clockDimensions,0,Math.PI*2,false);
context.stroke();//描边绘制
//绘制表盘的刻度线
for(var i=1;i<=60;i++){
if(i%5==0){
context.save();//保存当前绘制环境
context.beginPath();
context.lineWidth =clockDimensions/30;
context.strokeStyle = "#9AABB1";
//重置坐标原点(0,0)
context.translate(canvas.width/2,canvas.height/2);
//绘制环境旋转方法,以(0,0)为参考点进行旋转
context.rotate(Math.PI*2/60 * i);
context.moveTo(0,clockDimensions-clockDimensions/30);
context.lineTo(0,clockDimensions-clockDimensions/8);
context.stroke();
context.beginPath();
context.textAlign = 'center';
context.textBaseline = 'middle';
context.font = 'bold '+Math.floor(clockDimensions/10)+'px 宋体';
context.fillStyle = "#03671F";
context.fillText(i/5,0,0-(clockDimensions-clockDimensions/5));
context.fill();
context.restore();//恢复当前保存的绘制环境
}else {
context.save();
context.beginPath();
context.lineWidth = Math.floor(clockDimensions/100);
context.strokeStyle = "#8EA5AB";
//重置坐标原点(0,0)
context.translate(canvas.width / 2, canvas.height / 2);
//绘制环境旋转方法,以(0,0)为参考点进行旋转
context.rotate(Math.PI * 2 / 60 * i);
context.moveTo(0, clockDimensions-clockDimensions/20);
context.lineTo(0, clockDimensions-clockDimensions/10);
context.stroke();
context.restore();
}
}
//获取当前windows的时间
var now = new Date();
var sec = now.getSeconds();
var min = now.getMinutes();
var hour = now.getHours();
//获取精准的小时数
hour = hour +min/60 + sec/3600;
//转换为12进制
hour = hour>12?(hour-12):hour;
//获取精准的分钟数
min = min + sec/60;
//绘制时针
context.save();
context.beginPath();
context.lineWidth = clockDimensions/30;
context.strokeStyle = "#596C74";
//重置坐标原点(0,0)
context.translate(canvas.width / 2, canvas.height / 2);
//绘制环境旋转方法,以(0,0)为参考点进行旋转
context.rotate(Math.PI * 2 / 12 * hour);
context.moveTo(0, clockDimensions/10);
context.lineTo(0, 0-clockDimensions/2);
context.stroke();
context.restore();
//绘制分针
context.save();
context.beginPath();
context.lineWidth = clockDimensions/40;
context.strokeStyle = "#596C74";
//重置坐标原点(0,0)
context.translate(canvas.width / 2, canvas.height / 2);
//绘制环境旋转方法,以(0,0)为参考点进行旋转
context.rotate(Math.PI * 2 / 60 * min);
context.moveTo(0, clockDimensions/8);
context.lineTo(0, 0-(clockDimensions-clockDimensions/5));
context.stroke();
context.restore();
//绘制秒针
context.save();
//重置坐标原点(0,0)
context.translate(canvas.width / 2, canvas.height / 2);
context.beginPath();
context.lineWidth = clockDimensions/50;
context.strokeStyle = "#738B93";
//绘制环境旋转方法,以(0,0)为参考点进行旋转
context.rotate(Math.PI * 2 / 60 * sec);
context.moveTo(0, clockDimensions/6);
context.lineTo(0, 0-(clockDimensions-clockDimensions/10));
context.stroke();
//修饰秒针
context.beginPath();
context.arc(0,0-(clockDimensions-clockDimensions/3),clockDimensions/20,0,Math.PI*2,true);
context.fillStyle = "#2FFC14";
context.fill();
context.lineWidth = clockDimensions/50;
context.stroke();
//修饰圆心
context.beginPath();
context.fillStyle = "#738B93";
context.arc(0,0,clockDimensions/20,0,Math.PI*2,true);
context.fill();
context.restore();
}
drowClock();
setInterval(drowClock,1000);
</script>
</body>
</html>
效果图:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# js
# Canvas
# 时钟
# JavaScript Canvas绘制圆形时钟效果
# js Canvas绘制圆形时钟效果
# js Canvas实现圆形时钟教程
# javascript结合Canvas 实现简易的圆形时钟
# js计时事件实现圆形时钟
# 不支持
# 大家分享
# 转换为
# 具体内容
# 大家多多
# 宋体
# 后期
# 下载最新版本
# getElementById
# context
# getContext
# function
# text
# height
# script
# document
# var
# drowClock
# A7C0DC
# strokeStyle
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Android Socket接口实现即时通讯实例代码
JavaScript常见的五种数组去重的方式
郑州企业网站制作公司,郑州招聘网站有哪些?
C语言设计一个闪闪的圣诞树
如何用好域名打造高点击率的自主建站?
Laravel怎么使用artisan命令缓存配置和视图
javascript中对象的定义、使用以及对象和原型链操作小结
北京网站制作的公司有哪些,北京白云观官方网站?
Internet Explorer官网直接进入 IE浏览器在线体验版网址
用v-html解决Vue.js渲染中html标签不被解析的问题
高防服务器如何保障网站安全无虞?
Laravel观察者模式如何使用_Laravel Model Observer配置
HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案
如何在万网利用已有域名快速建站?
Laravel如何实现一对一模型关联?(Eloquent示例)
Laravel如何发送系统通知?(Notification渠道示例)
javascript基于原型链的继承及call和apply函数用法分析
php485函数参数是什么意思_php485各参数详细说明【介绍】
详解CentOS6.5 安装 MySQL5.1.71的方法
网站制作大概要多少钱一个,做一个平台网站大概多少钱?
WEB开发之注册页面验证码倒计时代码的实现
香港服务器网站推广:SEO优化与外贸独立站搭建策略
Laravel如何实现文件上传和存储?(本地与S3配置)
百度浏览器网页无法复制文字怎么办 百度浏览器复制修复
网站建设要注意的标准 促进网站用户好感度!
长沙企业网站制作哪家好,长沙水业集团官方网站?
如何自定义建站之星模板颜色并下载新样式?
如何快速搭建支持数据库操作的智能建站平台?
Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程
百度浏览器如何管理插件 百度浏览器插件管理方法
安克发布新款氮化镓充电宝:体积缩小 30%,支持 200W 输出
Laravel Debugbar怎么安装_Laravel调试工具栏配置指南
电视网站制作tvbox接口,云海电视怎样自定义添加电视源?
如何将凡科建站内容保存为本地文件?
laravel怎么通过契约(Contracts)编程_laravel契约(Contracts)编程方法
Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势
长沙做网站要多少钱,长沙国安网络怎么样?
Laravel的.env文件有什么用_Laravel环境变量配置与管理详解
JavaScript中如何操作剪贴板_ClipboardAPI怎么用
如何在阿里云高效完成企业建站全流程?
Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】
Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】
英语简历制作免费网站推荐,如何将简历翻译成英文?
如何用景安虚拟主机手机版绑定域名建站?
Laravel安装步骤详细教程_Laravel环境搭建指南
百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭
上一篇:laravel 判断ajax请求
上一篇:laravel 判断ajax请求

