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 相关文章推荐
document.compatMode介绍
May 21 Javascript
JQuery选择器特辑 详细小结
May 14 Javascript
关于extjs treepanel复选框选中父节点与子节点的问题
Apr 02 Javascript
推荐一个自己用的封装好的javascript插件
Jan 29 Javascript
JavaScript分秒倒计时器实现方法
Feb 02 Javascript
vue.js入门教程之基础语法小结
Sep 01 Javascript
js实现各种复制到剪贴板的方法(分享)
Oct 27 Javascript
微信小程序wx.request实现后台数据交互功能分析
Nov 25 Javascript
angular6.0开发教程之如何安装angular6.0框架
Jun 29 Javascript
jQuery实现图片随机切换、抽奖功能(实例代码)
Oct 23 jQuery
Ant Design Vue 添加区分中英文的长度校验功能
Jan 21 Javascript
extjs4图表绘制之折线图实现方法分析
Mar 06 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中如何定义和使用常量
2013/02/28 PHP
php判断类是否存在函数class_exists用法分析
2014/11/14 PHP
主流PHP框架的优缺点对比分析
2014/12/25 PHP
yii去掉必填项中星号的方法
2015/12/28 PHP
利用Homestead快速运行一个Laravel项目的方法详解
2017/11/14 PHP
原生php实现excel文件读写的方法分析
2018/04/25 PHP
Laravel5.5 动态切换多语言的操作方式
2019/10/25 PHP
动态调用css文件——jquery的应用
2007/02/20 Javascript
JS URL传中文参数引发的乱码问题
2009/09/02 Javascript
JavaScript Eval 函数使用
2010/03/23 Javascript
jQuery实现点击文本框弹出热门标签的提示效果
2013/11/17 Javascript
JavaScript 模块的循环加载实现方法
2015/12/13 Javascript
解决js函数闭包内存泄露问题的办法
2016/01/25 Javascript
JS组件Bootstrap dropdown组件扩展hover事件
2016/04/17 Javascript
jQuery tagsinput在h5邮件客户端中应用详解
2016/09/26 Javascript
利用d3.js制作连线动画图与编辑器的方法实例
2019/09/05 Javascript
Python实现的根据文件名查找数据文件功能示例
2018/05/02 Python
python matplotlib绘图,修改坐标轴刻度为文字的实例
2018/05/25 Python
pyqt5使用按钮进行界面的跳转方法
2019/06/19 Python
Python中判断子串存在的性能比较及分析总结
2019/06/23 Python
Python实现 PS 图像调整中的亮度调整
2019/06/28 Python
Pandas之groupby( )用法笔记小结
2019/07/23 Python
python实现桌面气泡提示功能
2019/07/29 Python
Pytorch实现各种2d卷积示例
2019/12/30 Python
详解Anaconda 的安装教程
2020/09/23 Python
CSS图片翻转动画技术详解(IE也实现了)
2014/04/03 HTML / CSS
教师自我评价范文
2013/12/16 职场文书
校园绿化美化方案
2014/06/08 职场文书
机械专业技术员求职信
2014/06/14 职场文书
民族团结演讲稿范文
2014/08/27 职场文书
新员工入职欢迎词
2015/01/23 职场文书
沈阳故宫导游词
2015/01/31 职场文书
幼儿园教师个人工作总结2015
2015/05/12 职场文书
2015年音乐教研组工作总结
2015/07/22 职场文书
大学学生会主席竞选稿
2015/11/19 职场文书
2016优秀班主任个人先进事迹材料
2016/02/26 职场文书