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 相关文章推荐
对 lightbox JS 图片控件进行了一下改造, 使其他支持复杂的图片说明
Mar 20 Javascript
jQuery EasyUI API 中文文档 - Menu菜单
Oct 03 Javascript
jquery实现图片上传之前预览的方法
Jul 11 Javascript
JS实现同一个网页布局滑动门和TAB选项卡实例
Sep 23 Javascript
JS实现的最简Table选项卡效果
Oct 14 Javascript
jQuery时间日期三级联动(推荐)
Nov 27 Javascript
深入理解Angularjs中的$resource服务
Dec 31 Javascript
vue实现全选、反选功能
Nov 17 Javascript
AngularJS点击添加样式、点击变色设置的实例代码
Jul 27 Javascript
ES6中Array.copyWithin()函数的用法实例详解
Sep 16 Javascript
详解Webpack如何引入CDN链接来优化编译后的体积
Jun 21 Javascript
基于jQuery实现可编辑的表格
Dec 11 jQuery
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使用JSON和将json还原成数组
2015/02/12 PHP
PHP关联数组实现根据元素值删除元素的方法
2015/06/26 PHP
PHP的Yii框架中行为的定义与绑定方法讲解
2016/03/18 PHP
IE中jscript/javascript的条件编译
2006/09/07 Javascript
Ext第一周 史上最强学习笔记---GridPanel(基础篇)
2008/12/29 Javascript
javascript获取dom的下一个节点方法
2014/09/05 Javascript
jQuery 中$(this).index与$.each的使用指南
2014/11/20 Javascript
javascript面向对象之对象的深入理解
2015/01/13 Javascript
使用jquery插件qrcode生成二维码
2015/10/22 Javascript
深入理解Java线程编程中的阻塞队列容器
2015/12/07 Javascript
基于RequireJS和JQuery的模块化编程——常见问题全面解析
2016/04/14 Javascript
Node.js服务器环境下使用Mock.js拦截AJAX请求的教程
2016/05/23 Javascript
详解Angular的双向数据绑定(MV-VM)
2016/12/26 Javascript
Angular自定义组件实现数据双向数据绑定的实例
2017/12/11 Javascript
关于vue属性使用和不使用冒号的区别说明
2020/10/22 Javascript
Centos5.x下升级python到python2.7版本教程
2015/02/14 Python
Python递归遍历列表及输出的实现方法
2015/05/19 Python
深入解析Python设计模式编程中建造者模式的使用
2016/03/02 Python
Python利用turtle库绘制彩虹代码示例
2017/12/20 Python
python并发2之使用asyncio处理并发
2017/12/21 Python
python批量设置多个Excel文件页眉页脚的脚本
2018/03/14 Python
在Python中增加和插入元素的示例
2018/11/01 Python
10分钟教你用Python实现微信自动回复功能
2018/11/28 Python
解决Django后台ManyToManyField显示成Object的问题
2019/08/09 Python
Python 经典算法100及解析(小结)
2019/09/13 Python
Python中base64与xml取值结合问题
2019/12/22 Python
Python基础进阶之海量表情包多线程爬虫功能的实现
2020/12/17 Python
绝对令人的惊叹的CSS3折叠效果(3D效果)整理
2012/12/30 HTML / CSS
美国最大的存储市场:SpareFoot
2018/07/23 全球购物
Europcar西班牙:全球汽车租赁领域的领导者
2018/09/17 全球购物
智能家居、吸尘器、滑板车、电动自行车网上购物:Geekmaxi
2021/01/18 全球购物
专科文秘应届生求职信
2013/11/18 职场文书
聘用意向书范本
2014/04/01 职场文书
政风行风建设整改方案
2014/10/27 职场文书
2015年干部教育培训工作总结
2015/05/15 职场文书
2015年普法依法治理工作总结
2015/05/26 职场文书