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实现状态限定编辑的代码
Feb 11 Javascript
jQuery避免$符和其他JS库冲突的方法对比
Feb 20 Javascript
javascript实现完美拖拽效果
May 06 Javascript
jquery动画效果学习笔记(8种效果)
Nov 13 Javascript
AngularJS操作键值对象类似java的hashmap(填坑小结)
Nov 12 Javascript
swiper插件自定义切换箭头按钮
Dec 28 Javascript
常用的 JS 排序算法 整理版
Apr 05 Javascript
微信小程序首页的分类功能和搜索功能的实现思路及代码详解
Sep 11 Javascript
详解mpvue中小程序自定义导航组件开发指南
Feb 11 Javascript
Koa从零搭建到Api实现项目的搭建方法
Jul 30 Javascript
vue图片上传组件使用详解
Dec 23 Javascript
如何通过Proxy实现JSBridge模块化封装
Oct 22 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高级对象构建 多个构造函数的使用
2012/02/05 PHP
phpstrom使用xdebug配置方法
2013/12/17 PHP
PHP面向对象之工作单元(实例讲解)
2017/06/26 PHP
js checkbox(复选框) 使用集锦
2009/04/28 Javascript
Extjs学习笔记之二 初识Extjs之Form
2010/01/07 Javascript
JavaScript isPrototypeOf和hasOwnProperty使用区别
2010/03/04 Javascript
JavaScript 类型的包装对象(Typed Wrappers)
2011/10/27 Javascript
asp.net刷新本页面的六种方法总结
2014/01/07 Javascript
如何编写高质量JS代码(续)
2015/02/25 Javascript
JavaScript设计模式学习之“类式继承”
2015/03/12 Javascript
ReactNative之键盘Keyboard的弹出与消失示例
2017/07/11 Javascript
vue的全局提示框组件实例代码
2018/02/26 Javascript
Vue2 轮播图slide组件实例代码
2018/05/31 Javascript
JS获取今天是本月第几周、本月共几周、本月有多少天、是今年的第几周、是今年的第几天的示例代码
2018/12/05 Javascript
在layui下对元素进行事件绑定的实例
2019/09/06 Javascript
jQuery操作元素追加内容示例
2020/01/10 jQuery
element-ui点击查看大图的方法示例
2020/12/14 Javascript
[01:39](回顾)各路豪强针锋相对,几经鏖战四强产生
2014/07/01 DOTA
[47:03]完美世界DOTA2联赛PWL S3 Galaxy Racer vs Phoenix 第二场 12.10
2020/12/13 DOTA
python操作mysql中文显示乱码的解决方法
2014/10/11 Python
python刷投票的脚本实现代码
2014/11/08 Python
python中的闭包函数
2018/02/09 Python
基于Django与ajax之间的json传输方法
2018/05/29 Python
PyTorch-GPU加速实例
2020/06/23 Python
Python装饰器结合递归原理解析
2020/07/02 Python
以实惠的价格轻松租车,免费取消:Easyrentcars
2019/07/16 全球购物
法国购买隐形眼镜和眼镜网站:Optical Center
2019/10/08 全球购物
构造器Constructor是否可被override?
2013/08/06 面试题
艺术爱好者的自我评价分享
2013/10/08 职场文书
优秀民警事迹材料
2014/01/29 职场文书
外贸会计专业自荐信
2014/06/22 职场文书
幼儿园秋季开学通知
2015/07/16 职场文书
《失物招领》教学反思
2016/02/20 职场文书
spring boot项目application.properties文件存放及使用介绍
2021/06/30 Java/Android
日本官方排名前10的动漫,名侦探柯南上榜,第一是一部创造历史的动漫
2022/03/18 日漫
让JavaScript代码更加精简的方法技巧
2022/06/01 Javascript