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 相关文章推荐
使用隐藏的new来创建对象
Mar 29 Javascript
JS获取几种URL地址的方法小结
Feb 26 Javascript
JS中的构造函数详细解析
Mar 10 Javascript
Extjs grid添加一个图片状态或者按钮的方法
Apr 03 Javascript
javascript使用输出语句实现网页特效代码
Aug 06 Javascript
jQuery简单实现上下,左右滑动的方法
Jun 01 Javascript
Bootstrap的modal拖动效果
Dec 25 Javascript
微信小程序 wx.login解密出现乱码的问题解决办法
Mar 10 Javascript
Node.js实现发送邮件功能
Nov 06 Javascript
jQuery删除/清空指定元素的所有子节点实例代码
Jul 04 jQuery
JS 遍历 json 和 JQuery 遍历json操作完整示例
Nov 11 jQuery
vue项目中使用vue-layer弹框插件的方法
Mar 11 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获取MySql新增记录ID值的3种方法
2014/06/24 PHP
filemanage功能中用到的lib.js
2007/04/08 Javascript
document.compatMode介绍
2009/05/21 Javascript
jQuery事件绑定和委托实例
2014/11/25 Javascript
浅析在javascript中创建对象的各种模式
2016/05/06 Javascript
JavaScript实现复制或剪切内容到剪贴板功能的方法
2016/05/23 Javascript
轻松掌握JavaScript状态模式
2016/09/07 Javascript
vue-cli3.0如何使用CDN区分开发、生产、预发布环境
2018/11/22 Javascript
js比较两个单独的数组或对象是否相等的实例代码
2019/04/28 Javascript
如何利用vue+vue-router+elementUI实现简易通讯录
2019/05/13 Javascript
vue cli3 调用百度翻译API翻译页面的实现示例
2019/09/13 Javascript
详解element-ui中表单验证的三种方式
2019/09/18 Javascript
解决vue-router路由拦截造成死循环问题
2020/08/05 Javascript
原生JavaScript实现进度条
2021/02/19 Javascript
用Python的SimPy库简化复杂的编程模型的介绍
2015/04/13 Python
pytorch 把MNIST数据集转换成图片和txt的方法
2018/05/20 Python
Django实现文件上传下载
2019/10/06 Python
python实现简单图书管理系统
2019/11/22 Python
Scrapy实现模拟登录的示例代码
2021/02/21 Python
华为俄罗斯官方网上商城:购买Huawei手机和平板
2017/04/21 全球购物
美国Randolph太阳镜官网:美国制造的飞行员太阳镜和射击眼镜
2018/06/15 全球购物
英国领先的独立时装店:Van Mildert
2019/10/28 全球购物
自我评价个人范文
2013/12/16 职场文书
ktv收银员岗位职责
2013/12/16 职场文书
劳资专员岗位职责
2013/12/27 职场文书
师德演讲稿范文
2014/05/06 职场文书
2014年效能监察工作总结
2014/11/21 职场文书
2014年监理个人工作总结
2014/12/11 职场文书
2015年考研复习计划
2015/01/19 职场文书
本溪水洞导游词
2015/02/11 职场文书
幼儿园家长反馈意见
2015/06/03 职场文书
男人帮观后感
2015/06/18 职场文书
运动会报道稿大全
2015/07/23 职场文书
四年级作文之植物
2019/09/20 职场文书
MySQL 常见的数据表设计误区汇总
2021/06/07 MySQL
MySQL RC事务隔离的实现
2022/03/31 MySQL