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 setAttribute, getAttribute 在不同浏览器上的不同表现
Aug 05 Javascript
getAsDataURL在Firefox7.0下无法预览本地图片的解决方法
Nov 15 Javascript
javascript中$(function() {});写与不写有哪些区别
Aug 10 Javascript
jQuery插件 Jqplot图表实例
Jun 18 Javascript
移动端使用localResizeIMG4压缩图片
Apr 22 Javascript
AngularJs导出数据到Excel的示例代码
Aug 11 Javascript
AngularJS 教程及实例代码
Oct 23 Javascript
使用axios实现上传图片进度条功能
Dec 21 Javascript
详解Angular Forms中自定义ngModel绑定值的方式
Dec 10 Javascript
vue-router传参用法详解
Jan 19 Javascript
ES6入门教程之let、const的使用方法
Apr 13 Javascript
vue实现随机验证码功能的实例代码
Apr 30 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数组索引的Key加引号和不加引号的区别
2014/08/19 PHP
PHP QRCODE生成彩色二维码的方法
2016/05/19 PHP
PHP微信开发之文本自动回复
2016/06/23 PHP
PHP自带方法验证邮箱、URL、IP是否合法的函数
2016/12/08 PHP
yii2简单使用less代替css示例
2017/03/10 PHP
jquery遍历input取得input的name
2009/04/27 Javascript
JavaScript 学习笔记(十六) js事件
2010/02/01 Javascript
jQuery实现切换页面布局使用介绍
2011/10/09 Javascript
自定义jQuery选项卡插件实例
2013/03/27 Javascript
Document:getElementsByName()使用方法及示例
2013/10/28 Javascript
javascript 中that的含义示例介绍
2014/05/14 Javascript
jQuery中ajax的load()方法用法实例
2014/12/26 Javascript
Vue 固定头 固定列 点击表头可排序的表格组件
2016/11/25 Javascript
浅谈angular2路由预加载策略
2017/10/04 Javascript
基于vue2实现上拉加载功能
2017/11/28 Javascript
配置一个vue3.0项目的完整步骤
2019/04/26 Javascript
react 移动端实现列表左滑删除的示例代码
2019/07/04 Javascript
element form 校验数组每一项实例代码
2019/10/10 Javascript
解决vue侦听器watch,调用this时出现undefined的问题
2020/10/30 Javascript
复制粘贴功能的Python程序
2008/04/04 Python
Python脚本实现下载合并SAE日志
2015/02/10 Python
Python虚拟环境Virtualenv使用教程
2015/05/18 Python
浅谈Python的Django框架中的缓存控制
2015/07/24 Python
python+selenium实现京东自动登录及秒杀功能
2017/11/18 Python
Python查找文件中包含中文的行方法
2018/12/19 Python
通过shell+python实现企业微信预警
2019/03/07 Python
pygame编写音乐播放器的实现代码示例
2019/11/19 Python
python GUI库图形界面开发之PyQt5状态栏控件QStatusBar详细使用方法实例
2020/02/28 Python
如何用Python来进行查询和替换一个文本字符串
2014/01/02 面试题
村主任群众路线个人对照检查材料
2014/09/26 职场文书
正风肃纪剖析材料范文
2014/10/10 职场文书
区域销售经理岗位职责
2015/04/02 职场文书
干货:我将这样书写我的演讲稿!
2019/05/09 职场文书
如何用python反转图片,视频
2021/04/24 Python
python plt.plot bar 如何设置绘图尺寸大小
2021/06/01 Python
在Docker容器中部署SQL Server
2022/04/11 Servers