简单的canvas时钟

  1 <!DOCTYPE html>
  2 <html lang="en">
  3 <head>
  4     <meta charset="UTF-8">
  5     <title>clock</title>
  6 </head>
  7 <body>
  8     <canvas id="clock" width="500" height="500" style="display:block; margin:50px auto">
  9         您的浏览器不支持canvas标签!
 10     </canvas>
 11     <script>
 12         var clock = document.getElementById('clock');
 13         var ctx = clock.getContext('2d');
 14         function drawClock(){
 15             var today = new Date();
 16             var year = today.getFullYear();
 17             var month = today.getMonth() + 1;
 18             var date = today.getDate();
 19             var day = today.getDay();
 20             var hour = today.getHours();
 21             var minute = today.getMinutes();
 22             var second = today.getSeconds();
 23             hour = hour > 12 ? hour - 12 : hour;
 24 
 25             ctx.clearRect(0, 0, 500, 500);
 26 
 27             ctx.fillStyle = '#fff';
 28             ctx.beginPath();
 29             ctx.arc(250, 250, 205, 0, 2*Math.PI);
 30             ctx.closePath();
 31             ctx.fill();
 32 
 33             ctx.strokeStyle = '#ddd';
 34             ctx.lineWidth = 10;
 35             ctx.beginPath();
 36             ctx.arc(250, 250, 185, 0, 2*Math.PI);
 37             ctx.closePath();
 38             ctx.stroke();
 39 
 40             ctx.strokeStyle = '#96DFF7';
 41             ctx.lineWidth = 10;
 42             ctx.beginPath();
 43             ctx.arc(250, 250, 200, 0, 2*Math.PI);
 44             ctx.closePath();
 45             ctx.stroke();
 46 
 47             ctx.strokeStyle = '#96DFF7';
 48             ctx.lineWidth = 3;
 49             ctx.beginPath();
 50             ctx.arc(250, 250, 192, 0, 2*Math.PI);
 51             ctx.closePath();
 52             ctx.stroke();
 53 
 54             ctx.strokeStyle = '#09303C';
 55             ctx.lineWidth = 5;
 56             ctx.beginPath();
 57             ctx.arc(250, 250, 205, 0, 2*Math.PI);
 58             ctx.closePath();
 59             ctx.stroke();
 60 
 61             
 62             // 时刻度
 63             for(var i = 0; i < 12; i++) {
 64                 ctx.save();
 65                 ctx.lineWidth = 4;
 66                 ctx.strokeStyle = '#000';
 67                 ctx.translate(250, 250);
 68                 ctx.rotate(30 * i / 180 * Math.PI);
 69                 ctx.beginPath();
 70                 ctx.moveTo(0, 180);
 71                 ctx.lineTo(0, 160);
 72                 ctx.closePath();
 73                 ctx.stroke();
 74                 ctx.restore();
 75             }
 76             // 分刻度
 77             for(var i = 0; i < 60; i++) {
 78                 if(i % 5 != 0){
 79                     ctx.save();
 80                     ctx.lineWidth = 2;
 81                     ctx.strokeStyle = '#000';
 82                     ctx.translate(250, 250);
 83                     ctx.rotate(6 * i / 180 * Math.PI);
 84                     ctx.beginPath();
 85                     ctx.moveTo(0, 175);
 86                     ctx.lineTo(0, 170);
 87                     ctx.closePath();
 88                     ctx.stroke();
 89                     ctx.restore();
 90                 }
 91             }
 92 
 93             // 秒针
 94             ctx.save();
 95             ctx.lineWidth = 2;
 96             ctx.strokeStyle = "#f00";
 97             ctx.beginPath();
 98             ctx.translate(250, 250);
 99             ctx.rotate((second * 6 + 180) / 180 * Math.PI);
100             ctx.moveTo(0, 0);
101             ctx.lineTo(0, 150);
102             ctx.closePath();
103             ctx.stroke();
104             ctx.restore();
105 
106             // 分针
107             ctx.save();
108             ctx.lineWidth = 4;
109             ctx.strokeStyle = "#0ff";
110             ctx.beginPath();
111             ctx.translate(250, 250);
112             ctx.rotate((minute * 6 + second * 0.1 + 180) / 180 * Math.PI);
113             ctx.moveTo(0, 0);
114             ctx.lineTo(0, 130);
115             ctx.closePath();
116             ctx.stroke();
117             ctx.restore();
118 
119             // 时针 
120             ctx.save();
121             ctx.lineWidth = 6;
122             ctx.strokeStyle = "#000";
123             ctx.beginPath();
124             ctx.translate(250, 250);
125             ctx.rotate((hour * 30 + minute * 0.5 + 180) / 180 * Math.PI);
126             ctx.moveTo(0, 0);
127             ctx.lineTo(0, 90);
128             ctx.closePath();
129             ctx.stroke();
130             ctx.restore(); 
131 
132             ctx.fillStyle = "#f00";
133             ctx.beginPath();
134             ctx.arc(250, 250, 10, 0, 2 * Math.PI);
135             ctx.closePath();
136             ctx.fill();
137             ctx.fillStyle = "#000";
138             ctx.beginPath();
139             ctx.arc(250, 250, 8, 0, 2 * Math.PI);
140             ctx.closePath();
141             ctx.fill();
142             ctx.fillStyle = "#fff";
143             ctx.beginPath();
144             ctx.arc(250, 250, 6, 0, 2 * Math.PI);
145             ctx.closePath();
146             ctx.fill();
147 
148         }
149         drawClock();
150         setInterval(drawClock,10);
151     </script>
152 </body>
153 </html>

posted @ 2015-10-22 16:22  阁楼小洁  阅读(168)  评论(0编辑  收藏  举报