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 相关文章推荐
关于IFRAME 自适应高度的研究
Jul 20 Javascript
字符串的replace方法应用浅析
Dec 06 Javascript
js页面跳转的常用方法整理
Oct 18 Javascript
jQuery 属性选择器element[herf*='value']使用示例
Oct 20 Javascript
鼠标悬浮显示二级菜单效果的jquery实现
Oct 29 Javascript
Javascript实现多彩雪花从天降散落效果的方法
Feb 02 Javascript
JavaScript基于ajax编辑信息用法实例
Jul 15 Javascript
javascript解决IE6下hover问题的方法
Jul 28 Javascript
Kindeditor在线文本编辑器如何过滤HTML
Apr 14 Javascript
使用vue制作滑动标签
Sep 21 Javascript
Windows上node.js的多版本管理工具用法实例分析
Nov 06 Javascript
JavaScript十大取整方法实例教程
Dec 03 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短址转换实现方法
2015/02/25 PHP
PHP性能分析工具XHProf安装使用教程
2015/05/13 PHP
8个PHP数组面试题
2015/06/23 PHP
日常整理PHP中简单的图形处理(经典)
2015/10/26 PHP
调试WordPress中定时任务的相关PHP脚本示例
2015/12/10 PHP
yii用户注册表单验证实例
2015/12/26 PHP
php文件包含目录配置open_basedir的使用与性能详解
2017/04/03 PHP
js 多浏览器分别判断代码
2010/04/01 Javascript
Jquery显示、隐藏元素以及添加删除样式
2013/08/09 Javascript
转换字符串为json对象的方法详解
2013/11/29 Javascript
javascript结合CSS实现苹果开关按钮特效
2015/04/07 Javascript
关于input全选反选恶心的异常情况
2016/07/24 Javascript
如何实现json数据可视化详解
2016/11/24 Javascript
js中的DOM模拟购物车功能
2017/03/22 Javascript
简单实现jquery隔行变色
2017/11/09 jQuery
微信小程序局部刷新触发整页刷新效果的实现代码
2018/11/21 Javascript
vue 中 命名视图的用法实例详解
2019/08/14 Javascript
JS运算符简单用法示例
2020/01/19 Javascript
JavaScript定时器使用方法详解
2020/03/26 Javascript
使用Webpack 搭建 Vue3 开发环境过程详解
2020/07/28 Javascript
jQuery插件实现图片轮播效果
2020/10/19 jQuery
python中list列表的高级函数
2016/05/17 Python
基于wxPython的GUI实现输入对话框(2)
2019/02/27 Python
Python图像处理库PIL的ImageFilter模块使用介绍
2020/02/26 Python
Python数据库封装实现代码示例解析
2020/09/05 Python
CSS3实现的渐变幻灯片效果
2020/12/07 HTML / CSS
HTML5之WebGL 3D概述(下)—借助类库开发及框架介绍
2013/01/31 HTML / CSS
HTML5 manifest离线缓存的示例代码
2018/08/08 HTML / CSS
CHARLES & KEITH台湾官网:新加坡时尚品牌
2019/07/30 全球购物
进程的查看和调度分别使用什么命令
2015/03/25 面试题
创业计划书如何编写
2014/02/06 职场文书
优秀安全员事迹材料
2014/05/11 职场文书
国王的演讲观后感
2015/06/03 职场文书
个人向公司借款协议书
2016/03/19 职场文书
民政局2016年“六一”儿童节慰问活动总结
2016/04/06 职场文书
分享mysql的current_timestamp小坑及解决
2021/11/27 MySQL