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>
  • 相关阅读:
    Photoshop 基础七 位图 矢量图 栅格化
    Photoshop 基础六 图层
    Warfare And Logistics UVALive
    Walk Through the Forest UVA
    Airport Express UVA
    Guess UVALive
    Play on Words UVA
    The Necklace UVA
    Food Delivery ZOJ
    Brackets Sequence POJ
  • 原文地址:https://www.cnblogs.com/cfhome/p/2750884.html
Copyright © 2011-2022 走看看