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的Cookies
Jan 16 Javascript
Prototype Number对象 学习
Jul 19 Javascript
比较详细的关于javascript 解析json的代码
Dec 16 Javascript
AJAX使用了UpdatePanel后无法使用alert弹出脚本
Apr 02 Javascript
JavaScript实现搜索框的自动完成功能(一)
Feb 25 Javascript
Bootstrap3.0学习教程之JS折叠插件
May 27 Javascript
canvas实现流星雨的背景效果
Jan 13 Javascript
Node.js 8 中的 util.promisify的详解
Jun 12 Javascript
javascript数组的定义及操作实例
Nov 10 Javascript
Vue+ElementUI使用vue-pdf实现预览功能
Nov 26 Javascript
vue+vant实现商品列表批量倒计时功能
Jan 13 Javascript
JavaScript 声明私有变量的两种方式
Feb 05 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
实用函数8
2007/11/08 PHP
php不使用copy()函数复制文件的方法
2015/03/13 PHP
Apache服务器下防止图片盗链的办法
2015/07/06 PHP
PHP使用Pthread实现的多线程操作实例
2015/11/14 PHP
javascript编程起步(第三课)
2007/02/27 Javascript
javascript 去字符串空格终极版(支持utf8)
2009/11/14 Javascript
JavaScript中出现乱码的处理心得
2009/12/24 Javascript
推荐 21 款优秀的高性能 Node.js 开发框架
2014/08/18 Javascript
jquery实现标签上移、下移、置顶
2015/04/26 Javascript
javascript常用正则表达式汇总
2015/07/31 Javascript
移动端jQuery修正Web页面滑动时div问题的两则实例
2016/05/30 Javascript
jQuery+CSS实现简单切换菜单示例
2016/07/27 Javascript
深入学习js瀑布流布局
2016/10/14 Javascript
ionic cordova一次上传多张图片(类似input file提交表单)的实现方法
2016/12/16 Javascript
JavaScript中String对象的方法介绍
2017/01/04 Javascript
JS查找数组中重复元素的方法详解
2017/06/14 Javascript
Node.js实现连接mysql数据库功能示例
2017/09/15 Javascript
探索webpack模块及webpack3新特性
2017/09/18 Javascript
JavaScript switch语句使用方法简介
2019/12/30 Javascript
从零学python系列之数据处理编程实例(二)
2014/05/22 Python
浅谈Python 的枚举 Enum
2017/06/12 Python
python使用fork实现守护进程的方法
2017/11/16 Python
Python编程实现线性回归和批量梯度下降法代码实例
2018/01/04 Python
tensorflow实现图像的裁剪和填充方法
2018/07/27 Python
python 搭建简单的http server,可直接post文件的实例
2019/01/03 Python
基于Python爬取fofa网页端数据过程解析
2020/07/13 Python
详解Python中如何将数据存储为json格式的文件
2020/11/18 Python
英文版餐饮运营管理求职信
2013/11/06 职场文书
求职信模板标准格式范文
2014/02/23 职场文书
员工试用期自我鉴定范文
2014/09/15 职场文书
毕业证代领委托书
2014/09/26 职场文书
校园运动会广播稿
2014/10/06 职场文书
2014党的群众路线教育实践活动总结报告
2014/10/31 职场文书
公司门卫岗位职责
2015/04/13 职场文书
参加招聘会后的感想
2015/08/10 职场文书
python数字图像处理:图像的绘制
2022/06/28 Python