canvas 绘制圆形时钟
发布时间 - 2026-01-10 23:13:09 点击率:次效果如下:
代码如下:
<!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
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Angular 表单中正确绑定输入值以确保提交与验证正常工作
Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用
在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?
深入理解Android中的xmlns:tools属性
Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)
Linux系统运维自动化项目教程_Ansible批量管理实战
北京专业网站制作设计师招聘,北京白云观官方网站?
Laravel PHP版本要求一览_Laravel各版本环境要求对照
Laravel如何发送系统通知?(Notification渠道示例)
UC浏览器如何设置启动页 UC浏览器启动页设置方法
Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程
制作旅游网站html,怎样注册旅游网站?
Laravel如何使用Blade模板引擎?(完整语法和示例)
如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?
微博html5版本怎么弄发超话_超话进入入口及发帖格式要求【教程】
IOS倒计时设置UIButton标题title的抖动问题
网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?
html文件怎么打开证书错误_https协议的html打开提示不安全【指南】
Laravel如何生成和使用数据填充?(Seeder和Factory示例)
js代码实现下拉菜单【推荐】
javascript中闭包概念与用法深入理解
音乐网站服务器如何优化API响应速度?
Win11怎么恢复误删照片_Win11数据恢复工具使用【推荐】
如何正确下载安装西数主机建站助手?
Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】
在线教育网站制作平台,山西立德教育官网?
如何确保FTP站点访问权限与数据传输安全?
Laravel如何配置中间件Middleware_Laravel自定义中间件拦截请求与权限校验【步骤】
iOS验证手机号的正则表达式
如何在万网自助建站中设置域名及备案?
如何在阿里云香港服务器快速搭建网站?
免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?
EditPlus中的正则表达式 实战(4)
如何快速启动建站代理加盟业务?
文字头像制作网站推荐软件,醒图能自动配文字吗?
Android okhttputils现在进度显示实例代码
linux写shell需要注意的问题(必看)
🚀拖拽式CMS建站能否实现高效与个性化并存?
Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】
如何快速搭建高效可靠的建站解决方案?
Linux系统命令中screen命令详解
Laravel的路由模型绑定怎么用_Laravel Route Model Binding简化控制器逻辑
Laravel N+1查询问题如何解决_Eloquent预加载(Eager Loading)优化数据库查询
Laravel怎么为数据库表字段添加索引以优化查询
如何做网站制作流程,*游戏网站怎么搭建?
高防服务器:AI智能防御DDoS攻击与数据安全保障
浅谈Javascript中的Label语句
如何将凡科建站内容保存为本地文件?
Laravel怎么配置.env环境变量_Laravel生产环境敏感数据保护与读取【方法】
如何在腾讯云服务器快速搭建个人网站?

