原理代码如下:

  

<!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. jsp去除空行的web.xml配置

    在jsp中我们引入的标签,例如jstl的标签,循环遍历等等,可能会产生很多空行,其实也没什么,不会影响展示,但是空行多多少少会影响性能,这是我们只需要在web.xml中配置一下我们就可以很简单的去掉, ...

  2. EL表达式判断不能为空

    前几天在做一个网站的时候遇到一个问题,要判断一个在request或者session域里面的对象是否为空,利用EL表达式,正常思维就是用 <c:if test="${* != null} ...

  3. 关键字final的用法

    final关键字可以用来修饰类.方法和变量. 1.final修饰的类不能被继承. 2.final修饰的方法不能被重写. 3.final修饰的变量是常量,不能修改其值.

  4. JQ小随笔

    JQ  select的val 会自动选择option的val layer 弹窗插件 Validation-Engine验证插件

  5. Java线程和守护进程

    ava的线程机制,有两类线程:User Thread(用户线程).Daemon Thread(守护线程) . 操作系统里面是没有守护线程的概念,只有守护进程,但是Java语言机制是构建在JVM的基础之 ...

  6. 【前端】Vue和Vux开发WebApp日志一、整合vue+cordova和webpack+gulp

    转载请注明出处:http://www.cnblogs.com/shamoyuu/p/vue_vux.html 项目github地址:https://github.com/shamoyuu/vue-vu ...

  7. ubuntu 14.04 分辨率调整 -- xrandr命令

    问题描述: 自己在安装ubuntu-kylin 14.04 TLS系统成功后,在调整分辨率的时候(系统设置--显示)发现分辨率的选项只有1024x768以及800x600两个选项,而台式机的外接显示屏 ...

  8. 深入理解StrongReference,SoftReference, WeakReference和PhantomReference

    Java 中一共有 4 种类型的引用 : StrongReference. SoftReference. WeakReference 以及 PhantomReference (传说中的幽灵引用 呵呵) ...

  9. linux内核移植X86平台的例子

    bootloader支持启动多个Linux 内核安装(X86平台) 1. cparch/x86/boot/bzImage /boot/vmlinuz-$version 2. cp $initrd /b ...

  10. 配置JBoss环境变量

    配置JBoss环境变量 1.单击"计算机"右键,选中"属性" 2.找到"高级系统设置",并且单击,会弹出一个窗口 3.选择"高级- ...