canvas绘制表盘时钟


Posted in Javascript onJanuary 23, 2017

话不多说,请看代码:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>canvas绘制表盘</title>
</head>
<body>
 <canvas id='box' width="500" height="500" >
 您的浏览器不支持canvas
 </canvas>
 <script>
 var box = document.getElementById('box');
 var cxt = box.getContext('2d');
 // 时钟动起来
 var timer = null;
 function clock(){
 var date = new Date();
 var h = date.getHours();
 h = h + h/60;
 h = h>12? h-12:h;
 var m = date.getMinutes();
 var s = date.getSeconds();
 // 清画布
 cxt.clearRect(0,0,500,500); 
 // 画表盘
 cxt.strokeStyle = '#f0f';
 cxt.lineWidth = 6;
 cxt.beginPath();
 cxt.arc(250,250,100,0,2*Math.PI);
 cxt.stroke();
 // 画时钟刻度
 for(var i=0; i<12; i++){
 cxt.save();
 cxt.translate(250,250);
 cxt.rotate(30*i*Math.PI/180);
 cxt.lineWidth = 3;
 cxt.beginPath();
 cxt.moveTo(0,-80);
 cxt.lineTo(0,-92);
 cxt.stroke();
 cxt.restore();
 }
 //画分钟刻度
 for(var i=0; i<60; i++){
 cxt.save();
 cxt.translate(250,250);
 cxt.rotate(6*i*Math.PI/180);
 cxt.lineWidth = 2;
 cxt.beginPath();
 cxt.moveTo(0,-86);
 cxt.lineTo(0,-92);
 cxt.stroke();
 cxt.restore();
 }
 // 画时针
 cxt.save();
 cxt.lineWidth = 5;
 cxt.translate(250,250);
 cxt.rotate(h*30*Math.PI/180);
 cxt.beginPath();
 cxt.moveTo(0,6);
 cxt.lineTo(0,-40);
 cxt.stroke();
 cxt.restore();
 // 画分针
 cxt.save();
 cxt.lineWidth = 3;
 cxt.translate(250,250);
 cxt.rotate(m*6*Math.PI/180);
 cxt.beginPath();
 cxt.moveTo(0,8);
 cxt.lineTo(0,-60);
 cxt.stroke();
 cxt.restore();
 // 画秒针
 cxt.save();
 cxt.lineWidth = 1;
 cxt.translate(250,250);
 cxt.rotate(s*6*Math.PI/180);
 cxt.beginPath();
 cxt.moveTo(0,10);
 cxt.lineTo(0,-75);
 cxt.stroke();
 cxt.restore();
 // 画中心的小圆固定三根针
 cxt.save();
 cxt.beginPath();
 cxt.fillStyle = '#0f0';
 cxt.lineWidth = 2;
 cxt.translate(250,250);
 cxt.arc(0,0,2,0,360,false);
 cxt.stroke();
 cxt.fill();
 cxt.restore();
 // 画秒针上的园
 cxt.save();
 cxt.fillStyle = '#f00';
 cxt.lineWidth = 2;
 cxt.translate(250,250);
 cxt.rotate(s*6*Math.PI/180);
 cxt.beginPath();
 cxt.arc(0,-60,2,0,360,false);
 cxt.stroke();
 cxt.fill();
 cxt.restore();
 }
 clock();
 timer = setInterval(clock,1000);
 </script>
</body>
</html>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
Prototype使用指南之selector.js
Jan 10 Javascript
javascript不同页面传值的改进版
Sep 30 Javascript
Javascript+XMLHttpRequest+asp.net无刷新读取数据库数据
Aug 09 Javascript
js constructor的实际作用分析
Nov 15 Javascript
Checbox的操作含已选、未选及判断代码
Nov 07 Javascript
浅析JavaScript中的同名标识符优先级
Dec 06 Javascript
Windows系统下Node.js的简单入门教程
Jun 23 Javascript
不同js异步函数同步的实现方法
May 28 Javascript
Bootstrap实现水平排列的表单
Jul 04 Javascript
一个手写的vue放大镜效果
Aug 09 Javascript
javascript实现鼠标点击生成文字特效
Dec 24 Javascript
vue-video-player 断点续播的实现
Feb 01 Vue.js
canvas绘制的直线动画
Jan 23 #Javascript
node.js实现复制文本到剪切板的功能
Jan 23 #Javascript
jQuery 全选 全不选 事件绑定的实现代码
Jan 23 #Javascript
Javascript中构造函数要注意的一些坑
Jan 23 #Javascript
在 Angular2 中实现自定义校验指令(确认密码)的方法
Jan 23 #Javascript
jQuery.cookie.js实现记录最近浏览过的商品功能示例
Jan 23 #Javascript
利用JS实现简单的日期选择插件
Jan 23 #Javascript
You might like
php在多维数组中根据键名快速查询其父键以及父键值的代码
2011/05/07 PHP
php通过curl模拟登陆DZ论坛
2015/05/11 PHP
Swoole-1.7.22 版本已发布,修复PHP7相关问题
2015/12/31 PHP
PHP实现的简单操作SQLite数据库类与用法示例
2017/06/19 PHP
[企业公众号]升级到[企业微信]之后发送消息失败的解决方法
2017/06/30 PHP
tp5(thinkPHP5)框架连接数据库的方法示例
2018/12/24 PHP
Laravel框架路由管理简单示例
2019/05/07 PHP
锋利的jQuery 第三章章节总结的例子
2010/03/23 Javascript
Javascript 静态页面实现随机显示广告的办法
2010/11/17 Javascript
JavaScript中的字符串操作详解
2013/11/12 Javascript
JavaScript中获取鼠标位置相关属性总结
2014/10/11 Javascript
nodejs实现的一个简单聊天室功能分享
2014/12/06 NodeJs
轻松创建nodejs服务器(10):处理上传图片
2014/12/18 NodeJs
js封装可使用的构造函数继承用法分析
2015/01/28 Javascript
jquery实现可自动判断位置的弹出层效果代码
2015/10/12 Javascript
Angular 2父子组件数据传递之@ViewChild获取子组件详解
2017/07/04 Javascript
简单谈谈CommonsChunkPlugin抽取公共模块
2017/12/31 Javascript
js图数据结构处理 迪杰斯特拉算法代码实例
2019/09/11 Javascript
如何使用vue slot创建一个模态框的实例代码
2020/05/24 Javascript
你不知道的SpringBoot与Vue部署解决方案
2020/11/09 Javascript
JavaScript 防抖和节流遇见的奇怪问题及解决
2020/11/20 Javascript
Python 代码性能优化技巧分享
2012/08/07 Python
python监控网卡流量并使用graphite绘图的示例
2014/04/27 Python
跟老齐学Python之正规地说一句话
2014/09/28 Python
Python入门之三角函数atan2()函数详解
2017/11/08 Python
python-docx修改已存在的Word文档的表格的字体格式方法
2018/05/08 Python
Python读取txt文件数据的方法(用于接口自动化参数化数据)
2018/06/27 Python
python中将两组数据放在一起按照某一固定顺序shuffle的实例
2019/07/15 Python
CSS3中31种选择器使用方法教程
2013/12/05 HTML / CSS
有影响力的人、名人和艺术家的官方商品:Represent
2019/11/26 全球购物
室内设计专业个人的自我评价
2013/10/19 职场文书
幼儿园大班毕业感言
2014/02/06 职场文书
个人安全承诺书
2014/05/22 职场文书
群众路线四风对照检查材料
2014/11/04 职场文书
干货:如何写好工作总结报告!
2019/05/10 职场文书