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中的float运算精度实例分析
Aug 21 Javascript
js中cookie的添加、取值、删除示例代码
Oct 21 Javascript
JS文本获得焦点清除文本文字的示例代码
Jan 13 Javascript
jQuery获得包含margin的outerWidth和outerHeight的方法
Mar 25 Javascript
跟我学习javascript的最新标准ES6
Nov 20 Javascript
javascript实现2016新年版日历
Jan 25 Javascript
谈谈JavaScript中的几种借用方法
Aug 09 Javascript
JS/jQuery判断DOM节点是否存在的简单方法
Nov 24 Javascript
Angular-Touch库用法示例
Dec 22 Javascript
原生Aajax 和jQuery Ajax 写法个人总结
Mar 24 jQuery
element-ui上传一张图片后隐藏上传按钮功能
May 22 Javascript
vant 时间选择器--开始时间和结束时间实例
Nov 04 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 MessagePack介绍
2013/10/06 PHP
php实现网站顶踩功能的完整前端代码
2015/07/19 PHP
PHP会话操作之cookie用法分析
2016/09/28 PHP
ThinkPHP简单使用memcache缓存的方法
2016/11/15 PHP
PHP商品秒杀问题解决方案实例详解【mysql与redis】
2019/07/22 PHP
JavaScript中Object和Function的关系小结
2009/09/26 Javascript
Jquery下判断Id是否存在的代码
2011/01/06 Javascript
JavaScript实现拼音排序的方法
2012/11/20 Javascript
jQuery自定义事件的简单实现代码
2014/01/27 Javascript
js文件包含的几种方式介绍
2014/09/28 Javascript
jQuery实现只允许输入数字和小数点的方法
2016/03/02 Javascript
jQuery表单对象属性过滤选择器实例详解
2016/09/13 Javascript
详解js产生对象的3种基本方式(工厂模式,构造函数模式,原型模式)
2017/01/09 Javascript
js实现倒计时效果(小于10补零)
2017/03/08 Javascript
浅谈关于axios和session的一些事
2017/07/13 Javascript
浅谈es6中export和export default的作用及区别
2018/02/07 Javascript
React BootStrap用户体验框架快速上手
2018/03/06 Javascript
react同构实践之实现自己的同构模板
2019/03/13 Javascript
layui table 表格上添加日期控件的两种方法
2019/09/28 Javascript
详解Howler.js Web音频播放终极解决方案
2020/08/23 Javascript
[02:01]大师之路——DOTA2完美大师赛11月论剑上海
2017/11/06 DOTA
python笔记(1) 关于我们应不应该继续学习python
2012/10/24 Python
教你如何将 Sublime 3 打造成 Python/Django IDE开发利器
2014/07/04 Python
python保存二维数组到txt文件中的方法
2018/11/15 Python
numpy和pandas中数组的合并、拉直和重塑实例
2019/06/28 Python
Python列表元素常见操作简单示例
2019/10/25 Python
基于django micro搭建网站实现加水印功能
2020/05/22 Python
keras的三种模型实现与区别说明
2020/07/03 Python
friso美素佳儿官方海外旗舰店:荷兰原产原罐
2017/07/03 全球购物
一份Java笔试题
2012/02/21 面试题
甜品店的创业计划书范文
2014/01/02 职场文书
高一政治教学反思
2014/01/28 职场文书
安全教育实施方案
2014/03/02 职场文书
远程网络教育毕业生自我鉴定
2014/04/14 职场文书
机关党总支领导班子整改方案
2014/09/20 职场文书
电频谱管理的原则是什么
2022/02/18 无线电