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 相关文章推荐
利用Jquery实现可多选的下拉框
Feb 21 Javascript
jquery制作弹窗提示窗口代码分享
Mar 02 Javascript
JavaScript实现判断图片是否加载完成的3种方法整理
Mar 13 Javascript
AngularJS手动表单验证
Feb 01 Javascript
探讨:JavaScript ECAMScript5 新特性之get/set访问器
May 05 Javascript
javascript九宫格图片随机打乱位置的实现方法
Mar 15 Javascript
Vue cli 引入第三方JS和CSS的常用方法分享
Jan 20 Javascript
vue checkbox 全选 数据的绑定及获取和计算方法
Feb 09 Javascript
vue+vuex+axios实现登录、注册页权限拦截
Mar 09 Javascript
vue动态绑定class选中当前列表变色的方法示例
Dec 19 Javascript
JS内置对象和Math对象知识点详解
Apr 03 Javascript
vue实现tab栏点击高亮效果
Aug 19 Javascript
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设计模式 Bridge (桥接模式)
2011/06/26 PHP
PHP实现懒加载的方法
2015/03/07 PHP
深入分析PHP优化及注意事项
2016/07/04 PHP
thinkphp跨库操作的简单代码实例
2016/09/22 PHP
在php的yii2框架中整合hbase库的方法
2018/09/20 PHP
jQuery获取Select选择的Text和Value(详细汇总)
2013/01/25 Javascript
jquery实现手风琴效果实例代码
2013/11/15 Javascript
js菜单点击显示或隐藏效果的简单实例
2014/01/13 Javascript
js的参数有长度限制吗?发现不能超过2083个字符
2014/04/20 Javascript
Javascript中this的用法详解
2014/09/22 Javascript
js实现仿微博滚动显示信息的效果
2015/12/21 Javascript
JavaScript实现瀑布流布局
2020/06/28 Javascript
详解Bootstrap各式各样的按钮(推荐)
2016/12/13 Javascript
详解webpack3编译兼容IE8的正确姿势
2017/12/21 Javascript
Vux+Axios拦截器增加loading的问题及实现方法
2018/11/08 Javascript
vue3.0 的 Composition API 的使用示例
2020/10/26 Javascript
[02:10]探秘浦东源深体育馆 DOTA2 Supermajor不见不散
2018/05/17 DOTA
使用Python对Csv文件操作实例代码
2017/05/12 Python
python列表生成式与列表生成器的使用
2018/02/23 Python
python下解压缩zip文件并删除文件的实例
2018/04/24 Python
Python获取航线信息并且制作成图的讲解
2019/01/03 Python
使用python opencv对目录下图片进行去重的方法
2019/01/12 Python
Python使用线程来接收串口数据的示例
2019/07/02 Python
Django 1.10以上版本 url 配置注意事项详解
2019/08/05 Python
Python爬虫定时计划任务的几种常见方法(推荐)
2021/01/15 Python
使用纯HTML5编写一款网页上的时钟的代码分享
2015/11/16 HTML / CSS
Asics日本官网:鬼冢八喜郎创立的跑鞋运动品牌
2017/10/18 全球购物
瑞典轮胎在线:Tirendo.se
2018/06/21 全球购物
介绍java中初始化块的使用
2012/09/11 面试题
大三自我鉴定范文
2013/10/05 职场文书
乡镇干部十八大感言
2014/02/17 职场文书
婚礼司仪主持词
2014/03/14 职场文书
特教教师先进事迹
2014/05/21 职场文书
流动人口婚育证明
2014/10/19 职场文书
销售2014年度工作总结
2014/12/08 职场文书
工厂无线对讲系统解决方案
2022/02/18 无线电