javascript canvas实现简易时钟例子


Posted in Javascript onSeptember 05, 2020

本文实例为大家分享了javascript canvas实现简易时钟的具体代码,供大家参考,具体内容如下

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>钟表</title>
  <script type="text/javascript">
  window.onload=function(){
    //1.获取画布
    var canvas=document.getElementById("canvas");
    //2.获取上下文对象(获取画笔)
    var cx=canvas.getContext("2d");
    //3.设置画笔样式
    function clock(){
      cx.fillStyle="tomato";
    //4.绘制图形
      //绘制表盘
      cx.beginPath(); //绘制圆形
      cx.arc(300,300,200,0,Math.PI*2);//设置圆 arc(x,y,r,begin,end,c);x,y:圆的圆的圆心坐标 r:圆的半径 begin,end:开始角度和结束角度;Math.PI=180 Math.PI/180=1度 c:是否按照逆时针进行绘制true:按照逆时 false:顺时针
      cx.closePath();//关闭路径
      cx.fill();//
      //绘制时刻度
        cx.lineWidth=2;
        cx.strokeStyle="black";
        for(var i=0;i<12;i++){
          cx.save();
          cx.translate(300,300);//形移
          cx.rotate(i*(Math.PI/6));
          
          cx.beginPath();
          cx.moveTo(0,-180);
          cx.lineTo(0,-200);
          cx.stroke();
          cx.closePath();

          cx.fillStyle="black";//绘制数字
          cx.font="16px blod";
          cx.rotate(Math.PI/6);
          cx.fillText(i+1,-6,-220);//文字

          cx.restore();
        }

      //绘制分刻度
      for(var i=0;i<60;i++){
        cx.save();
        cx.translate(300,300);
        cx.rotate(i*(Math.PI/30));

        cx.beginPath();
        cx.moveTo(0,-190);
        cx.lineTo(0,-200);
        cx.stroke();
        cx.closePath();

        cx.restore();
      }
      
      //获取当前时间
      var today=new Date();
      var hour=today.getHours();
      var min=today.getMinutes();
      var sec=today.getSeconds();

      hour=hour+min/60;
      
      //绘制时针
      cx.lineWidth=4;
      cx.save();
      cx.translate(300,300);
      cx.beginPath();
      cx.rotate(hour*(Math.PI/6));//旋转
      cx.moveTo(0,10);
      cx.lineTo(0,-130);
      cx.closePath();
      cx.stroke();
      cx.restore();   //回滚

      //绘制分针
      cx.lineWidth=2;
      cx.save();
      cx.translate(300,300);
      cx.beginPath();
      cx.rotate(min*(Math.PI/30));
      cx.moveTo(0,10);
      cx.lineTo(0,-160);
      cx.closePath();
      cx.stroke();
      cx.restore();   //回滚

      //绘制秒针
      cx.lineWidth=1;
      cx.strokeStyle="black";
      cx.save();
      cx.translate(300,300);
      cx.beginPath();
      cx.rotate(sec*(Math.PI/30));
      cx.moveTo(0,10);
      cx.lineTo(0,-160);
      cx.closePath();
      cx.stroke();
      cx.restore();  

      //绘制交叉处
      cx.fillStyle='#ccc';
      cx.strokeStyle="red";
      cx.save();
      cx.translate(300,300);
      cx.beginPath();
      cx.beginPath();
      cx.arc(0,0,4,0,Math.PI*2);
      cx.closePath();
      cx.fill();
      cx.closePath();
      cx.stroke();
      cx.restore();
      
      setTimeout(clock,1000);
    }
   
    // setInterval(clock,1000);
    clock();
  }
  </script>
</head>
<body>
  <canvas id="canvas" width="1300px" height="600px" style="background-color: #ccc;"></canvas>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JSON 入门指南 想了解json的朋友可以看下
Aug 26 Javascript
javascript中直接写php代码的方法
Jul 31 Javascript
javascript实现控制浏览器全屏
Mar 30 Javascript
jQuery实现鼠标划过添加和删除class的方法
Jun 26 Javascript
浅谈javascript函数式编程
Sep 06 Javascript
jQuery prototype冲突的2种解决方法(附demo示例下载)
Jan 21 Javascript
jQuery 移动端拖拽(模块化开发,触摸事件,webpack)
Oct 28 Javascript
学习vue.js条件渲染
Dec 03 Javascript
js实现单张图片平移切换效果
Oct 11 Javascript
Js逆向实现滑动验证码图片还原的示例代码
Mar 10 Javascript
uni-app微信小程序登录授权的实现
May 22 Javascript
element 动态合并表格的步骤
Dec 31 Javascript
vue中使用vue-pdf的方法详解
Sep 05 #Javascript
Angular+Ionic使用queryParams实现跳转页传值的方法
Sep 05 #Javascript
vue 将多个过滤器封装到一个文件中的代码详解
Sep 05 #Javascript
js实现可爱的气泡特效
Sep 05 #Javascript
js实现点击按钮随机生成背景颜色
Sep 05 #Javascript
javascript实现一款好看的秒表计时器
Sep 05 #Javascript
vue组件讲解(is属性的用法)模板标签替换操作
Sep 04 #Javascript
You might like
社区(php&amp;&amp;mysql)一
2006/10/09 PHP
PHP实现网上点歌(二)
2006/10/09 PHP
ThinkPHP做文字水印时提示call an undefined function exif_imagetype()解决方法
2014/10/30 PHP
DOM基础及php读取xml内容操作的方法
2015/01/23 PHP
帝国cms目录结构分享
2015/07/06 PHP
限制复选框的最大可选数
2006/07/01 Javascript
JavaScript 应用类库代码
2008/06/02 Javascript
javascript中的注释使用与注意事项小结
2011/09/20 Javascript
js实时获取系统当前时间实例代码
2013/06/28 Javascript
Jquery.Form 异步提交表单的简单实例
2014/03/03 Javascript
jquery判断小数点两位和自动删除小数两位后的数字
2014/03/19 Javascript
JavaScript数据结构与算法之栈详解
2015/03/12 Javascript
AngularJS基础 ng-submit 指令简单示例
2016/08/03 Javascript
js实现文字超出部分用省略号代替实例代码
2016/09/01 Javascript
JavaScript使用Range调色及透明度实例
2016/09/25 Javascript
浅谈Javascript中的函数、this以及原型
2016/10/09 Javascript
详解Angular2 关于*ngFor 嵌套循环
2017/05/22 Javascript
JavaScript用二分法查找数据的实例代码
2017/06/17 Javascript
React Native 自定义下拉刷新上拉加载的列表的示例
2018/03/01 Javascript
JavaScript寄生组合式继承原理与用法分析
2019/01/11 Javascript
[01:45]DOTA2众星出演!DSPL刀塔次级职业联赛宣传片
2014/11/21 DOTA
浅析Python中的序列化存储的方法
2015/04/28 Python
Python中返回字典键的值的values()方法使用
2015/05/22 Python
python将logging模块封装成单独模块并实现动态切换Level方式
2020/05/12 Python
python 实现非极大值抑制算法(Non-maximum suppression, NMS)
2020/10/15 Python
Python接口自动化系列之unittest结合ddt的使用教程详解
2021/02/23 Python
使用Filters滤镜弥补CSS3的跨浏览器问题以及兼容低版本IE
2013/01/23 HTML / CSS
荷兰在线体育用品商店:Avantisport.nl
2018/07/04 全球购物
人力资源部经理岗位职责规定
2014/02/23 职场文书
高中生操行评语
2014/04/25 职场文书
青春无悔演讲稿
2014/05/08 职场文书
党员剖析材料范文
2014/12/18 职场文书
反腐倡廉影片观后感
2015/06/08 职场文书
教师病假条范文
2015/08/17 职场文书
Python 多线程处理任务实例
2021/11/07 Python
Pygame Draw绘图函数的具体使用
2021/11/17 Python