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>
  • 相关阅读:
    ~是什么意思 在C语言中,~0代表什么
    window中普通用户无法登录远程桌面
    服务器22端口被封锁的问题解决
    让hive的表注释和字段注释支持中文
    MySQL Workbench在archlinux中出现 Could not store password: The name org.freedesktop.secrets was not provided by any .service files的错误
    记使用talend从oracle抽取数据时,数字变为0的问题
    记mysql中时间相关的一个奇怪问题
    使用dbeaver查mysql的表会导致锁表的问题
    oracle中实现某个用户truncate 其它用户下的表
    Oracle中找出用户的上次登录时间
  • 原文地址:https://www.cnblogs.com/cfhome/p/2750884.html
Copyright © 2011-2022 走看看