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读取XML文件数据并显示的实现代码
Dec 16 Javascript
用Jquery重写windows.alert方法实现思路
Apr 03 Javascript
jQuery实现炫酷的鼠标轨迹特效
Feb 01 Javascript
微信小程序--onShareAppMessage分享参数用处(页面分享)
Apr 18 Javascript
JavaScript监听手机物理返回键的两种解决方法
Aug 14 Javascript
vue-cli项目中怎么使用mock数据
Sep 27 Javascript
Node做中转服务器转发接口
Oct 18 Javascript
vuejs实现递归树型菜单组件
Jan 13 Javascript
JS动画实现回调地狱promise的实例代码详解
Nov 08 Javascript
微信 jssdk 签名错误invalid signature的解决方法
Jan 14 Javascript
Vue中图片Src使用变量的方法
Oct 30 Javascript
使用vue实现HTML页面生成图片的方法
Mar 12 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
利用google提供的API(JavaScript接口)获取网站访问者IP地理位置的代码详解
2010/07/24 Javascript
判断多个input type=file是否有已经选择好文件的代码
2012/05/23 Javascript
javascript一元操作符(递增、递减)使用示例
2013/08/07 Javascript
js(jQuery)获取时间的方法及常用时间类搜集
2013/10/23 Javascript
JavaScript 面向对象与原型
2015/04/10 Javascript
JavaScript类继承及实例化的方法
2015/07/25 Javascript
js定时器实例分享
2016/12/20 Javascript
基于vuejs实现一个todolist项目
2017/04/11 Javascript
jQuery实现的简单在线计算器功能
2017/05/11 jQuery
Node.js学习之查询字符串解析querystring详解
2017/09/28 Javascript
javaScript手机号码校验工具类PhoneUtils详解
2017/12/08 Javascript
微信小程序scroll-view仿拼多多横向滑动滚动条
2020/04/21 Javascript
vue富文本框(插入文本、图片、视频)的使用及问题小结
2018/08/17 Javascript
基于vue.js中关于下拉框的值默认及绑定问题
2018/08/22 Javascript
浅谈React Event实现原理
2018/09/20 Javascript
Vue+webpack项目配置便于维护的目录结构教程详解
2018/10/14 Javascript
Javascript数组方法reduce的妙用之处分享
2019/06/10 Javascript
vue中echarts图表大小适应窗口大小且不需要刷新案例
2020/07/19 Javascript
vue 授权获取微信openId操作
2020/11/13 Javascript
python中常用的各种数据库操作模块和连接实例
2014/05/29 Python
Python最基本的数据类型以及对元组的介绍
2015/04/14 Python
Python设计模式之门面模式简单示例
2018/01/09 Python
Tensorflow 查看变量的值方法
2018/06/14 Python
解决python中 f.write写入中文出错的问题
2018/10/31 Python
selenium+python设置爬虫代理IP的方法
2018/11/29 Python
Pythony运维入门之Socket网络编程详解
2019/04/15 Python
Pycharm如何打断点的方法步骤
2019/06/13 Python
对python tkinter窗口弹出置顶的方法详解
2019/06/14 Python
详解pyinstaller selenium python3 chrome打包问题
2019/10/18 Python
浅谈html5增强的页面元素
2016/06/14 HTML / CSS
利用指针变量实现队列的入队操作
2012/04/07 面试题
集团公司总经理岗位职责
2013/12/20 职场文书
成龙霸王洗发水广告词
2014/03/14 职场文书
工地例会施工汇报材料
2014/08/22 职场文书
功夫熊猫观后感
2015/06/10 职场文书
python实现会员信息管理系统(List)
2022/03/18 Python