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 相关文章推荐
ie和firefox不兼容的解决方法集合
Apr 28 Javascript
一些常用且实用的原生JavaScript函数
Sep 08 Javascript
JavaScript中:表达式和语句的区别[译]
Sep 17 Javascript
js实现单击图片放大图片的方法
Feb 17 Javascript
jquery正则表达式验证(手机号、身份证号、中文名称)
Dec 31 Javascript
JavaScript中windows.open()、windows.close()方法详解
Jul 28 Javascript
老生常谈jquery id选择器和class选择器的区别
Feb 12 Javascript
js+html5实现复制文字按钮
Jul 15 Javascript
10个在JavaScript开发中常遇到的BUG
Dec 18 Javascript
Vue Autocomplete 自动完成功能简单示例
May 25 Javascript
JS判断数组是否包含某元素实现方法汇总
Jun 24 Javascript
vue中element 的upload组件发送请求给后端操作
Sep 07 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 JSON出错:Cannot use object of type stdClass as array解决方法
2014/08/16 PHP
php设计模式之原型模式分析【星际争霸游戏案例】
2020/03/23 PHP
js no-repeat写法 背景不重复
2009/03/18 Javascript
使用原生js封装webapp滑动效果(惯性滑动、滑动回弹)
2014/05/06 Javascript
用Jquery.load载入页面后样式没了页面混乱的解决方法
2014/10/20 Javascript
JavaScript获取当前网页标题(title)的方法
2015/04/03 Javascript
jQuery禁用键盘后退屏蔽F5刷新及禁用右键单击
2016/01/22 Javascript
js实现适配不同的屏幕大小
2017/04/10 Javascript
使用 Vue.js 仿百度搜索框的实例代码
2017/05/09 Javascript
jQuery实现的页面遮罩层功能示例【测试可用】
2017/10/14 jQuery
js 两数组去除重复数值的实例
2017/12/06 Javascript
Vue2.0结合webuploader实现文件分片上传功能
2018/03/09 Javascript
使用Vue如何写一个双向数据绑定(面试常见)
2018/04/20 Javascript
详解Angular5路由传值方式及其相关问题
2018/04/28 Javascript
vue forEach循环数组拿到自己想要的数据方法
2018/09/21 Javascript
用Python的Tornado框架结合memcached页面改善博客性能
2015/04/24 Python
Opencv+Python 色彩通道拆分及合并的示例
2018/12/08 Python
Python内置random模块生成随机数的方法
2019/05/31 Python
python交易记录链的实现过程详解
2019/07/03 Python
关于tf.reverse_sequence()简述
2020/01/20 Python
python自动脚本的pyautogui入门学习
2020/04/01 Python
python实现每天自动签到领积分的示例代码
2020/08/18 Python
Python 实现PS滤镜的旋涡特效
2020/12/03 Python
详解CSS3中nth-child与nth-of-type的区别
2017/01/05 HTML / CSS
意大利专业化妆品品牌:KIKO MILANO
2017/02/01 全球购物
为什么会有内存对齐
2016/10/10 面试题
什么是SQL Server的确定性函数和不确定性函数
2016/08/04 面试题
方正Java笔试题
2014/07/03 面试题
《最可爱的人》教学反思
2014/02/14 职场文书
金融管理应届生求职信
2014/02/20 职场文书
《画》教学反思
2014/04/14 职场文书
《合作意向书》怎么写?
2019/08/20 职场文书
导游词之太原天龙山
2020/01/02 职场文书
Redis 彻底禁用RDB持久化操作
2021/07/09 Redis
python 安全地删除列表元素的方法
2022/03/16 Python
《现实主义勇者的王国再建记》第三弹OST全曲试听片段公开
2022/04/04 日漫