zoukankan      html  css  js  c++  java
  • HTML5 时钟

    利用HTML5提供的canvas,可以简单地实现一个走动的时钟,不用使用任何图片。

    主要是理解里面的数学关系。。
    在chrome浏览器运行良好,其他浏览器的暂未测试。
    代码如下:
     1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
     2 "http://www.w3.org/TR/html4/loose.dtd">
     3 <html xmlns="http://www.w3.org/1999/xhtml">
     4 <head>
     5 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     6 <title>HTML5实现时钟</title>
     7 <script type="text/javascript">
     8 window.onload=function(){
     9 var ctx=document.getElementByIdx_x("mycanvas").getContext("2d");
    10 var mycanvas=document.getElementByIdx_x("mycanvas");
    11 var cwidth=200;
    12 var cheight=200;
    13 ctx.translate(cwidth/2+40,cheight/2-25);           //将基点移动到中心
    14 var len=cwidth/2;
    15 
    16 //alert("hi");
    17 function drawWatch(){
    18 ctx.clearRect(-cwidth/2,-cheight/2,cwidth,cheight);
    19 var tlen=len*0.65;          //画数字
    20 ctx.font="14px 'Arial";
    21 ctx.fillStyle="#000";
    22 ctx.textAlign="center";
    23 ctx.textBaseline="middle";
    24 for(var i=0;i<12;i++){
    25 var tag1=Math.PI*2*(3-i)/12;
    26 var tx=tlen*Math.cos(tag1);
    27 var ty=-tlen*Math.sin(tag1);
    28 if(i==0) ctx.fillText(12,tx,ty);
    29 else
    30 ctx.fillText(i,tx,ty);
    31 }
    32 var d=new Date();
    33 var h=d.getHours();
    34 var m=d.getMinutes();
    35 var s=d.getSeconds();
    36 if(h>12) h=h-12;
    37 //绘制时针
    38 var angle1=Math.PI*2*(3-(h+m/60))/12;
    39 var length1=len*0.3;
    40 var width1=5;
    41 var color1="#000";
    42 drawHand(angle1,length1,width1,color1);
    43 //绘制分针
    44 var angle2=Math.PI*2*(15-(m+s/60))/60;
    45 var width2=3;
    46 var length2=len*0.45;
    47 var color2="#555555";
    48 drawHand(angle2,length2,width2,color2);
    49 //绘制秒针
    50 var angle3=Math.PI*2*(15-s)/60;
    51 var length3=len*0.55;
    52 var width3=1;
    53 var color3="#aa0000";
    54 drawHand(angle3,length3,width3,color3);
    55 }
    56 function drawHand(angle,len,width,color){
    57 var x=len*Math.cos(angle);
    58 var y=-len*Math.sin(angle);
    59 ctx.strokeStyle=color;
    60 ctx.lineWidth=width;
    61 ctx.lineCap="round"; // 把针尖设置为圆形
    62 ctx.beginPath();
    63 ctx.moveTo(0,0);
    64 ctx.lineTo(x,y);
    65 ctx.stroke();
    66 }
    67 setInterval(drawWatch,1000);
    68 }
    69 </script>
    70 </head>
    71 <body>
    72 <canvas id="mycanvas" style=" 200px; height: 200px; border: 2px dotted #000;"> </canvas>
    73 </body>
    74 </html>
  • 相关阅读:
    java编译错误No enclosing instance of type TestFrame is accessible. Must qualify the allocation with an enclosing instance of type TestFrame (e.g. x.new A(
    java 2中创建线程方法
    动态规划基本思想
    关于eclipse编译一个工程多个main函数
    java Gui初识
    Eclipse中java项目的打包
    java 播放声音
    把资源文件夹导入到eclipse中
    Java建立JProgressBar
    How to grant permissions to a custom assembly that is referenced in a report in Reporting Services
  • 原文地址:https://www.cnblogs.com/cfhome/p/2750884.html
Copyright © 2011-2022 走看看