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 相关文章推荐
如何取得中文输入的真实长度?
Jun 24 Javascript
XP折叠菜单&amp;仿QQ2006菜单
Dec 16 Javascript
教你如何解密js/vbs/vbscript加密的编码异处理小结
Jun 25 Javascript
js/ajax跨越访问-jsonp的原理和实例(javascript和jquery实现代码)
Dec 27 Javascript
网页中表单按回车就自动提交的问题的解决方案
Nov 03 Javascript
又一款js时钟!transform实现时钟效果
Aug 15 Javascript
Angular设置title信息解决SEO方面存在问题
Aug 19 Javascript
vue2.x select2 指令封装详解
Oct 12 Javascript
使用vue-router设置每个页面的title方法
Feb 11 Javascript
vue 动态绑定背景图片的方法
Aug 10 Javascript
bootstrap+spring boot实现面包屑导航功能(前端代码)
Oct 09 Javascript
在Webpack中用url-loader处理图片和字体的问题
Apr 28 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
用cookies来跟踪识别用户
2006/10/09 PHP
菜鸟学PHP之Smarty入门
2007/01/04 PHP
php地址引用(php地址引用的效率问题)
2012/03/23 PHP
PHP图像处理之使用imagecolorallocate()函数设置颜色例子
2014/11/19 PHP
PHP实现在windows下配置sendmail并通过mail()函数发送邮件的方法
2017/06/20 PHP
Laravel框架使用monolog_mysql实现将系统日志信息保存到mysql数据库的方法
2018/08/16 PHP
win10下 php安装seaslog扩展的详细步骤
2020/12/04 PHP
javascript 动态参数判空操作
2008/12/22 Javascript
Javascript 面试题随笔
2011/03/31 Javascript
Jquery 绑定时间实现代码
2011/05/03 Javascript
基于编写jQuery的无缝滚动插件
2014/08/02 Javascript
微信分享的标题、缩略图、连接及描述设置方法
2014/10/14 Javascript
JS控制静态页面传递参数并获取参数应用
2016/08/10 Javascript
js判断是否为空和typeof的用法(详解)
2016/10/07 Javascript
基于javascript实现数字英文验证码
2017/01/25 Javascript
非常实用的vue导航钩子
2017/03/20 Javascript
javascript使用正则实现去掉字符串前面的所有0
2018/07/23 Javascript
浅析java线程中断的办法
2018/07/29 Javascript
[50:58]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 Mineski vs EG
2018/04/03 DOTA
python中字符串类型json操作的注意事项
2017/05/02 Python
python 每天如何定时启动爬虫任务(实现方法分享)
2018/05/21 Python
python tkinter canvas 显示图片的示例
2019/06/13 Python
python实现简单成绩录入系统
2019/09/19 Python
Python字符串大小写转换拼接删除空白
2019/09/19 Python
python 图片二值化处理(处理后为纯黑白的图片)
2019/11/01 Python
CSS3+JavaScript实现炫酷呼吸效果的示例代码
2020/06/15 HTML / CSS
美国高端婴童品牌:Hanna Andersson
2016/10/30 全球购物
澳大利亚冒险体验:Adrenaline(跳伞、V8赛车、热气球等)
2017/09/18 全球购物
新奥尔良珠宝:Mignon Faget
2020/11/23 全球购物
linux面试题参考答案(9)
2016/01/29 面试题
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?
2016/08/18 面试题
市场营销专业个人求职信范文
2013/12/14 职场文书
主题教育活动总结
2014/05/05 职场文书
学生会干部自我鉴定2014
2014/09/18 职场文书
民主评议政风行风活动心得体会
2014/10/29 职场文书
建国大业电影观后感
2015/06/01 职场文书