canvas绘制表盘时钟

 更新时间:2017年01月23日 10:21:56   作者:艾瑞卡  
本文主要分享了canvas绘制表盘时钟的示例代码。具有很好的参考价值,下面跟着小编一起来看下吧

话不多说,请看代码:

<!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>

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

相关文章

  • 微信小程序实现换肤功能

    微信小程序实现换肤功能

    这篇文章主要为大家详细介绍了微信小程序实现换肤功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • JS获取当前时间的两种方法小结

    JS获取当前时间的两种方法小结

    这篇文章主要给大家介绍了关于JS获取当前时间的两种方法,在web开发中,通过js获取时间非常的常用,我这里做个总结,需要的朋友可以参考下
    2023-09-09
  • javascript十个最常用的自定义函数(中文版)

    javascript十个最常用的自定义函数(中文版)

    如果不使用类库或者没有自己的类库,储备一些常用函数总是有好处的。
    2009-09-09
  • ExtJS实现文件下载的方法实例

    ExtJS实现文件下载的方法实例

    这篇文章介绍了ExtJS实现文件下载的方法实例,有需要的朋友可以参考一下
    2013-11-11
  • 原生js实现计算购物车总金额的示例

    原生js实现计算购物车总金额的示例

    本文主要介绍了原生js实现计算购物车总金额的示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • 浅析AMD CMD CommonJS规范--javascript模块化加载学习心得总结

    浅析AMD CMD CommonJS规范--javascript模块化加载学习心得总结

    下面小编就为大家分享一篇浅析AMD CMD CommonJS规范--javascript模块化加载学习心得总结。小编觉得写的非常不错,需要的朋友可以过来参考一下
    2016-03-03
  • js HTML5手机刮刮乐代码

    js HTML5手机刮刮乐代码

    这篇文章为大家详细主要介绍了js HTML5手机刮刮乐代码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • ES6入门教程之Class和Module详解

    ES6入门教程之Class和Module详解

    这篇文章主要给大家介绍了ES6中Class和Module的相关资料,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-05-05
  • JavaScript操作Oracle数据库示例

    JavaScript操作Oracle数据库示例

    这篇文章主要介绍了JavaScript操作Oracle数据库示例,本文使用ActiveXObject实现访问Oracle数据库,需要的朋友可以参考下
    2015-03-03
  • 基于Css3和JQuery实现打字机效果

    基于Css3和JQuery实现打字机效果

    最近做项目,有需求实现一个字符逐个出现,类似于打字机效果,于是上网搜了相关资料,接下来,小编就给大家详细介绍基于Css3和JQuery实现打字机效果,需要的朋友可以参考下
    2015-08-08

最新评论