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 相关文章推荐
Jquery 插件学习实例1 插件制作说明与tableUI优化
Apr 02 Javascript
jQuery实现单击按钮遮罩弹出对话框(仿天猫的删除对话框)
Apr 10 Javascript
JS+CSS实现简易实用的滑动门菜单效果
Sep 18 Javascript
JS使用正则表达式除去字符串中重复字符的方法
Nov 05 Javascript
浅析js中substring和substr的方法
Nov 09 Javascript
Bootstrap树形控件使用方法详解
Jan 27 Javascript
js date 格式化
Feb 15 Javascript
vue-cli webpack2项目打包优化分享
Feb 07 Javascript
浅谈React 服务器端渲染的使用
May 08 Javascript
微信小程序实现原生步骤条
Jul 25 Javascript
element表格翻页第2页从1开始编号(后端从0开始分页)
Dec 10 Javascript
JS函数基本定义与用法示例
Jan 15 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实现双链表删除与插入节点的方法示例
2017/11/11 PHP
PHP后台备份MySQL数据库的源码实例
2019/03/18 PHP
laravel框架的安装与路由实例分析
2019/10/11 PHP
php实现的简单多进程服务器类完整示例
2020/02/01 PHP
javascript 写类方式之八
2009/07/05 Javascript
js实现全国省份城市级联下拉菜单效果代码
2015/09/07 Javascript
vue.js表格分页示例
2016/10/18 Javascript
原生JS实现图片左右轮播
2016/12/30 Javascript
jquery获取下拉框中的循环值
2017/02/08 Javascript
nodejs mysql 实现分页的方法
2017/06/06 NodeJs
jQuery实现可兼容IE6的淡入淡出效果告警提示功能示例
2017/09/20 jQuery
this在vue和小程序中的使用详解
2019/01/28 Javascript
vue 页面回退mounted函数不执行的解决方案
2020/07/26 Javascript
Openlayers实现图形绘制
2020/09/28 Javascript
Python 面向对象 成员的访问约束
2008/12/23 Python
在Django同1个页面中的多表单处理详解
2017/01/25 Python
python中defaultdict的用法详解
2017/06/07 Python
python清理子进程机制剖析
2017/11/23 Python
Django跨域请求CSRF的方法示例
2018/11/11 Python
对Python定时任务的启动和停止方法详解
2019/02/19 Python
我用Python抓取了7000 多本电子书案例详解
2019/03/25 Python
在python plt图表中文字大小调节的方法
2019/07/08 Python
pyautogui自动化控制鼠标和键盘操作的步骤
2020/04/01 Python
pandas中read_csv、rolling、expanding用法详解
2020/04/21 Python
CSS3 倾斜的网页图片库实例教程
2009/11/14 HTML / CSS
18-35岁旅游团的全球领导者:Contiki
2017/02/08 全球购物
屈臣氏官方旗舰店:亚洲享负盛名的保健及美妆零售商
2019/03/15 全球购物
艺术设计专业个人求职信
2013/09/21 职场文书
入党申请人的自我鉴定
2013/12/01 职场文书
文秘应聘自荐书范文
2014/02/18 职场文书
网络技术专业求职信
2014/02/18 职场文书
小学教师暑期培训方案
2014/08/28 职场文书
综合素质评价自我评价
2015/03/06 职场文书
2015年第31个教师节致辞
2015/07/31 职场文书
有关保护环境的宣传标语100条
2019/08/07 职场文书
【海涛dota解说】一房久违的影魔魂守二连发
2022/04/01 DOTA