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 相关文章推荐
JavaScript 异步调用框架 (Part 2 - 用例设计)
Aug 03 Javascript
Javascript动态引用CSS文件的2种方法介绍
Jun 06 Javascript
Ext4.2的Ext.grid.plugin.RowExpander无法触发事件解决办法
Aug 15 Javascript
Javascript中常用的检测方法小结
Oct 08 Javascript
js入门之Function函数的使用方法【新手必看】
Nov 22 Javascript
Angular.js中ng-if、ng-show和ng-hide的区别介绍
Jan 20 Javascript
用vue和node写的简易购物车实现
Apr 25 Javascript
JS实现导出Excel的五种方法详解【附源码下载】
Mar 15 Javascript
详解webpack之图片引入-增强的file-loader:url-loader
Oct 08 Javascript
js 实现 list转换成tree的方法示例(数组到树)
Aug 18 Javascript
JQuery事件委托(适用于给动态生成的脚本元素添加事件)
Feb 01 jQuery
帮你提高开发效率的JavaScript20个技巧
Jun 18 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
玩家交还《星际争霸》原始码光盘 暴雪报以厚礼
2017/05/05 星际争霸
浅析php插件 HTMLPurifier HTML解析器
2013/07/01 PHP
ext jquery 简单比较
2010/04/07 Javascript
ExtJs中简单的登录界面制作方法
2010/08/19 Javascript
Jquery插件 easyUI属性汇总
2011/01/19 Javascript
JS获取页面input控件中所有text控件并追加样式属性
2013/02/25 Javascript
js中Math之random,round,ceil,floor的用法总结
2013/12/26 Javascript
基于jQuery实现拖拽图标到回收站并删除功能
2015/11/25 Javascript
原生JavaScript实现瀑布流布局
2020/06/28 Javascript
详解AngularJS中$http缓存以及处理多个$http请求的方法
2016/02/06 Javascript
JavaScript中windows.open()、windows.close()方法详解
2016/07/28 Javascript
利用python分析access日志的方法
2016/10/26 Javascript
Bootstrap模态框水平垂直居中与增加拖拽功能
2016/11/09 Javascript
Node.js之删除文件夹(含递归删除)代码实例
2019/09/09 Javascript
layui实现把数据表格时间戳转换为时间格式的例子
2019/09/12 Javascript
[01:08:09]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#1Liquid VS Alliance第二局
2016/03/02 DOTA
Python实现线程池代码分享
2015/06/21 Python
python对配置文件.ini进行增删改查操作的方法示例
2017/07/28 Python
python tornado修改log输出方式
2019/11/18 Python
Python for i in range ()用法详解
2020/09/18 Python
python判断变量是否为int、字符串、列表、元组、字典的方法详解
2020/02/13 Python
Python如何把多个PDF文件合并代码实例
2020/02/13 Python
基于python实现微信好友数据分析(简单)
2020/02/16 Python
PyQt使用QPropertyAnimation开发简单动画
2020/04/02 Python
纯css3显示隐藏一个div特效的具体实现
2014/02/10 HTML / CSS
区域销售经理岗位职责
2013/12/10 职场文书
心得体会怎么写
2013/12/30 职场文书
医院实习接收函
2014/01/12 职场文书
物理专业大学生职业生涯规划书
2014/02/07 职场文书
迎元旦广播稿
2014/02/22 职场文书
公司节能减排方案
2014/05/16 职场文书
青春雷锋观后感
2015/06/10 职场文书
学校运动会简讯
2015/07/20 职场文书
MySQL之DML语言
2021/04/05 MySQL
html5 录制mp3音频支持采样率和比特率设置
2021/07/15 Javascript
关于MySQL临时表为什么可以重名的问题
2022/03/22 MySQL