用canvas做一个钟表

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="UTF-8">
 5         <title></title>
 6         <style>
 7             body{background: #000;}
 8             #ca{background:#999}
 9         </style>
10         <script>
11             window.onload=function(){
12                 var oc=document.getElementById("ca");
13                 var pa=oc.getContext('2d');
14                 function toDraw(){
15                     x=200;
16                     y=200;
17                     r=150;
18                     pa.clearRect(0,0,oc.width,oc.height);
19                     var pDate=new Date();
20                     var pHours=pDate.getHours();
21                     var pMin=pDate.getMinutes();
22                     var pSec=pDate.getSeconds();
23                     var pHoursValue=(-90+pHours*30+pMin/2)*Math.PI/180;
24                     var pMinValue=(-90+pMin*6)*Math.PI/180;
25                     var pSecValue=(-90+pSec*6)*Math.PI/180;
26                     
27                     /*分刻度*/
28                     pa.beginPath();
29                     for(i=0;i<60;i++){
30                     pa.moveTo(x,y);
31                     pa.arc(x,y,r,6*i*Math.PI/180,6*(i+1)*Math.PI/180,false);    
32                     }
33                     
34                     pa.closePath();
35                     pa.stroke();
36                     pa.fillStyle='white';
37                     /*外圆盘,遮住中间的分刻度*/
38                     pa.beginPath();
39                     pa.moveTo(x,y);
40                     pa.arc(x,y,r*19/20,0,360*Math.PI/180,false);
41                     pa.closePath();
42                     pa.fill();
43                     /*时刻度*/
44                     pa.lineWidth=3;
45                     pa.beginPath();
46                     for(i=0;i<12;i++){
47                     pa.moveTo(x,y);
48                     pa.arc(x,y,r,30*i*Math.PI/180,30*(i+1)*Math.PI/180,false);    
49                     }
50                     
51                     pa.closePath();
52                     pa.stroke();
53                     /*内圆盘*/
54                     pa.beginPath();
55                     pa.moveTo(x,y);
56                     pa.arc(x,y,r*18/20,0,360*Math.PI/180,false);
57                     pa.closePath();
58                     pa.fill();
59                     /*时针*/
60                     pa.lineWidth=5;
61                     pa.beginPath();
62                     pa.moveTo(x,y);
63                     pa.arc(x,y,r*10/20,pHoursValue,pHoursValue,false)
64                     pa.closePath();
65                     pa.stroke();
66                     /*分针*/
67                     pa.lineWidth=3;
68                     pa.beginPath();
69                     pa.moveTo(x,y);
70                     pa.arc(x,y,r*14/20,pMinValue,pMinValue,false)
71                     pa.closePath();
72                     pa.stroke();
73                     /*秒针*/
74                     pa.lineWidth=1;
75                     pa.beginPath();
76                     pa.moveTo(x,y);
77                     pa.arc(x,y,r*19/20,pSecValue,pSecValue,false)
78                     pa.closePath();
79                     pa.stroke();
80                     
81                     
82                     
83                 }
84                 setInterval(toDraw,1000);
85                 toDraw();
86                 
87                 
88                 
89                 
90             
91             };
92         </script>
93         
94     </head>
95     <body>
96         <canvas id="ca" width="400px" height="400px"></canvas>
97         
98     </body>
99 </html>

效果如下:

 

原文地址:https://www.cnblogs.com/azure-zero/p/10044682.html