原理代码如下:

  

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <title></title>
    <style>
      canvas{
      margin: 20px 400px ;
      }
    </style>
  </head>
  <body>
    <canvas width="500px" height="500px"></canvas>     <script>
      var can=document.getElementsByTagName("canvas")[];
      var x=can.getContext("2d");       function clock(){         //每次执行代码清楚一次画布
        x.clearRect(,,,)         //创建一个实心圆
        x.beginPath();
        x.fillStyle="blue";
        x.arc(,,,Math.PI*/,Math.PI*/)
        x.fill()
        x.closePath();         //再来一个白色的小圆
        x.beginPath();
        x.fillStyle="#ffffff";
        x.arc(,,,Math.PI*/,Math.PI*/)
        x.fill()
        x.closePath();         //分钟刻度
        for(var i=;i<;i++){
          x.save()
          x.beginPath();
          x.lineWidth=;
          x.translate(,)
          x.rotate(i**Math.PI/)
          x.moveTo(,)
          x.lineTo(,)
          x.stroke()
          x.closePath();
          x.restore()
        }         //时钟刻度
        for(var a=;a<;a++){
          x.save();
          x.beginPath()
          x.lineWidth=;
          x.translate(,);
          x.rotate(a**Math.PI/);
          x.moveTo(,)
          x.lineTo(,)
          x.stroke();
          x.closePath();
          x.restore();
        }         var time=new Date();
        var miao=time.getSeconds();
        var fen=time.getMinutes() + miao/;
        var hours=time.getHours() + fen/;
        if(hours>){
          hours=hours-
        }         x.beginPath()
        x.font="20px 黑体"
        x.strokeText(time.toLocaleString(),,)
        x.closePath();         //时
        x.save()
        x.translate(,)
        x.lineWidth=;
        x.beginPath();
        x.rotate(hours**Math.PI/)
        x.moveTo(,);
        x.lineTo(,-)
        x.stroke()
        x.closePath();
        x.restore()         //分
        x.save()
        x.beginPath();
        x.translate(,)
        x.lineWidth=;
        x.rotate(fen**Math.PI/)
        x.moveTo(,);
        x.lineTo(,-)
        x.stroke()
        x.closePath();
        x.restore()         //秒
        x.save()
        x.beginPath();
        x.translate(,)
        x.lineWidth=;
        x.rotate(miao**Math.PI/)
        x.moveTo(,);
        x.lineTo(,-)
        x.stroke()
        x.closePath();
        x.restore()         //秒针上的小圆点         x.save()
        x.beginPath();
        x.translate(,)
        x.rotate(miao**Math.PI/)
        x.fillStyle="blue";
        x.arc(,-,,,Math.PI*/)
        x.fill()
        x.closePath();
        x.restore() //中心蓝色小圆点         x.beginPath();
        x.fillStyle="blue"
        x.arc(,,,,Math.PI*/)
        x.fill()
        x.closePath();         //中心红色小圆点         x.beginPath();
        x.fillStyle="red"
        x.arc(,,,,Math.PI*/)
        x.fill()
        x.closePath();       }
      setTimeout(clock,)
      setInterval(clock,)
  </script>
</body>
</html>

效果图:

canvas画布,时钟的更多相关文章

  1. 使用canvas绘制时钟

    使用canvas绘制时钟  什么使canvas呢?HTML5 <canvas> 元素用于图形的绘制,通过脚本 (通常是JavaScript)来完成.<canvas> 标签只是图 ...

  2. HTML5 之Canvas 绘制时钟 Demo

    <!DOCTYPE html> <html> <head> <title>Canvas 之 时钟 Demo</title> <!--简 ...

  3. [ZZ+CH] Html5 canvas+js 时钟

    总之新Blog入驻以后,又开始老习惯,到处折腾自定义的空间,放些东西. 想起以前大一的时候做过一个Javascript的时间显示器,现在想做一个时钟,当然现在老奸巨猾,会先去看一看有前辈写过没. 前辈 ...

  4. canvas粒子时钟

    前面的话 本文将使用canvas实现粒子时钟效果 效果展示 点阵数字 digit.js是一个三维数组,包含的是0到9以及冒号(digit[10])的二维点阵.每个数字的点阵表示是7*10大小的二维数组 ...

  5. canvas画时钟,重拾乐趣!

    canvas时钟--效果图 一.先来简单介绍画时钟需要的canvas知识 1.在HTML页面中添加canvas元素,必须定义canvas元素的id属性值以便接下来的调用. HTML代码: <ca ...

  6. Canvas:时钟

    这个时钟是将钟盘的圆心点移到了 canvas 画布中心点.以方便后面的方位计算 ctx.translate(width/2,height/2); 现定义一个圆盘来显出这个时钟的基本位置 ctx.sav ...

  7. canvas-菜鸟版画布时钟

    这是以前自己练习写的一个画布时钟 <!DOCTYPE html><html lang="en"> <head> <meta charset ...

  8. [JS,Canvas]日历时钟

    [JS,Canvas]日历时钟 Html: <!doctype html> <html> <head> <meta charset="UTF-8&q ...

  9. html 5 canvas画布整理

    1. 创建canvas画布<canvas id="myCanvas" width="800" height="800" >< ...

  10. 用html5的canvas画布绘制贝塞尔曲线

    查看效果:http://keleyi.com/keleyi/phtml/html5/7.htm 完整代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHT ...

随机推荐

  1. 老男孩Python全栈开发(92天全)视频教程 自学笔记09

    day9课程内容: 乌班图(ubuntu)64位系统 和 VMware 虚拟机安装(官网收费又麻烦,在网上找资源 安装vmware: vm运行(秘钥找度娘)--文件--新建虚拟机--自定义 下一步-- ...

  2. 1.11 str 字符串

    字符串属于不可变序列,是 文本序列. 字符串的声明 >>> #字符串的声明既可以用单引号也可以用双引号,这两个能方法在效果上是一样的 >>> s = '' > ...

  3. mongodb 3.4 分片 一主 一副 一仲 鉴权集群部署.

    Docker方式部署 为了避免过分冗余,并且在主节点挂了,还能顺利自动提升,所以加入仲裁节点 mongodb版本: 环境:一台虚拟机 三个configsvr 副本: 端口为 27020,27021,2 ...

  4. JQuery基础知识学习1

    1.JQuery是javascript的类库 2.下载JQuery 3.导入JQuery <script src="jquery-3.0.0.js"></scri ...

  5. Linux基础三

    cat:查看全部(缺点:内容较多时不方便查看) 格式:cat [选项] 文件名 常用命令选项 -n:在每一行前加上行号 [root@localhost 桌面]# cat -n /etc/passwd ...

  6. ERROR 1045 (28000): Access denied for user xxx & ERROR 1449 (HY000): The user specified as a definer xxx does not exists

    今天在一个修改过权限的MySQL数据库遇到了"ERROR 1045 (28000): Access denied for user 'xxx'@'xxx.xxx.xxx.xxx' (usin ...

  7. GetWindowRect、GetClientRect、ScreenToClient与ClientToScreen

    GetWindowRect是取得窗口在屏幕坐标系下的RECT坐标(包括客户区和非客户区),这样可以得到窗口的大小和相对屏幕左上角(0,0)的位置. GetClientRect取得窗口客户区(不包括非客 ...

  8. IBM Rational AppScan:跨站点脚本攻击深入解析

    IBM Rational AppScan:跨站点脚本攻击深入解析    了解黑客如何启动跨站点脚本攻击(cross-site scripting,XSS),该攻击危害(及不危害)什么,如何检测它们,以 ...

  9. DOS批处理命令递归删除给定的文件(夹),兼VC工程清理小工具

    使用dos批处理命令递归删除指定的文件(夹): (下面内容针对清理VC工程!自己按说明任意修改) 2014-06-10修改:删除前增加了[y,n]询问: echo off rem 递归删除当前文件下指 ...

  10. FFMPEG:H264解码-SDL显示(RGB32、RGB24、YUV420P、YUV422)

    FFMpeg对视频文件进行解码的大致流程 1. 注册所有容器格式: av_register_all()2. 打开文件: av_open_input_file()3. 从文件中提取流信息: av_fin ...