1 <!doctype html>
2 <html>
3 <head>
4 <title>canvas dClock</title>
5 </head>
6 <body>
7 <canvas id = "clock" width = "500px" height = "200px">
8 您的浏览器太古董了,升级吧!
9 </canvas>
10 <script type = "text/javascript">
11 var clock = document.getElementById("clock");
12 var cxt = clock.getContext("2d");
13
14 //显示数字时钟
15 function showTime(m, n) {
16 cxt.clearRect(0, 0, 500, 500);
17
18 var now = new Date;
19 var hour = now.getHours();
20 var min = now.getMinutes();
21 var sec = now.getSeconds();
22 var msec = now.getMilliseconds();
23 hour = hour >= 10 ? hour : "0" + hour;
24 min = min >= 10 ? min : "0" + min;
25 sec = sec >= 10 ? sec : "0" + sec;
26 msec = (msec >= 10 && msec < 100) ? ("0" + msec) : (msec >= 0 && msec < 10) ? ("00" + msec) : msec;
27
28 bdigital(m, n, hour);
29 bdigital(m + 160, n, min);
30 bdigital(m + 320, n, sec);
31 //tdigital(m + 480, n, msec);
32
33 //三位数的显示
34 function tdigital(x, y, num) {
35 var ge = num % 10;
36 var shi = (parseInt(num / 10)) % 10;
37 var bai = parseInt((parseInt(num / 10)) / 10) % 10;
38 digital(x, y, bai);
39 digital(x + 70, y, shi);
40 digital(x + 140, y, ge);
41 }
42
43 //两位数的显示
44 function bdigital(x, y, num) {
45 var ge = num % 10;
46 var shi = (parseInt(num / 10)) % 10;
47 digital(x, y, shi);
48 digital(x + 70, y, ge);
49 }
50
51 //画:
52 //小时与分钟之间
53 cxt.lineWidth = 5;
54 cxt.strokeStyle = "#000";
55 cxt.fillStyle = "#000";
56 cxt.beginPath();
57 cxt.arc(m + 140, n + 80, 3, 0, 360, false);
58 cxt.fill();
59 cxt.closePath();
60 cxt.stroke();
61
62 cxt.lineWidth = 5;
63 cxt.strokeStyle = "#000";
64 cxt.fillStyle = "#000";
65 cxt.beginPath();
66 cxt.arc(m + 140, n + 100, 3, 0, 360, false);
67 cxt.fill();
68 cxt.closePath();
69 cxt.stroke();
70
71 //分钟与秒之间
72 cxt.lineWidth = 5;
73 cxt.strokeStyle = "#000";
74 cxt.fillStyle = "#000";
75 cxt.beginPath();
76 cxt.arc(m + 300, n + 80, 3, 0, 360, false);
77 cxt.fill();
78 cxt.closePath();
79 cxt.stroke();
80
81 cxt.lineWidth = 5;
82 cxt.strokeStyle = "#000";
83 cxt.fillStyle = "#000";
84 cxt.beginPath();
85 cxt.arc(m + 300, n + 100, 3, 0, 360, false);
86 cxt.fill();
87 cxt.closePath();
88 cxt.stroke();
89
90 //秒与毫秒之间一个.
91 // cxt.lineWidth = 5;
92 // cxt.strokeStyle = "#000";
93 // cxt.fillStyle = "#000";
94 // cxt.beginPath();
95 // cxt.arc(m + 460, n + 100, 3, 0, 360, false);
96 // cxt.fill();
97 // cxt.closePath();
98 // cxt.stroke();
99 }
100
101 //显示一位数字
102 function digital(x, y, num) {
103 //设置风格
104 cxt.lineWidth = 5;
105 cxt.strokeStyle = "#000";
106
107 //a
108 function a() {
109 cxt.beginPath();
110 cxt.moveTo(x, y);
111 cxt.lineTo(x + 50, y);
112 cxt.closePath();
113 cxt.stroke();
114 }
115
116 //b
117 function b() {
118 cxt.beginPath();
119 cxt.moveTo(x + 55, y + 5);
120 cxt.lineTo(x + 55, y + 55);
121 cxt.closePath();
122 cxt.stroke();
123 }
124
125 //c
126 function c() {
127 cxt.beginPath();
128 cxt.moveTo(x + 55, y + 60);
129 cxt.lineTo(x + 55, y + 110);
130 cxt.closePath();
131 cxt.stroke();
132 }
133
134 //d
135 function d() {
136 cxt.beginPath();
137 cxt.moveTo(x + 50, y + 115);
138 cxt.lineTo(x, y + 115);
139 cxt.closePath();
140 cxt.stroke();
141 }
142
143 //e
144 function e() {
145 cxt.beginPath();
146 cxt.moveTo(x - 5, y + 110);
147 cxt.lineTo(x - 5, y + 60);
148 cxt.closePath();
149 cxt.stroke();
150 }
151
152 //f
153 function f() {
154 cxt.beginPath();
155 cxt.moveTo(x - 5, y + 55);
156 cxt.lineTo(x - 5, y + 5);
157 cxt.closePath();
158 cxt.stroke();
159 }
160
161 //g
162 function g() {
163 cxt.beginPath();
164 cxt.moveTo(x, y + 57.5);
165 cxt.lineTo(x + 50, y + 57.5);
166 cxt.closePath();
167 cxt.stroke();
168 }
169
170 //0
171 function zero() {
172 a(); b(); c(); d(); e(); f();
173 }
174 //1
175 function one() {
176 b(); c();
177 }
178 //2
179 function two() {
180 a(); b(); d(); e(); g();
181 }
182 //3
183 function three() {
184 a(); b(); c(); d(); g();
185 }
186 //4
187 function four() {
188 b(); c(); f(); g();
189 }
190 //5
191 function five() {
192 a(); c(); d(); f(); g();
193 }
194 //6
195 function six() {
196 a(); c(); d(); e(); f(); g();
197 }
198 //7
199 function seven() {
200 a(); b(); c();
201 }
202 //8
203 function eight() {
204 a(); b(); c(); d(); e(); f(); g();
205 }
206 //9
207 function nine() {
208 a(); b(); c(); d(); f(); g();
209 }
210
211 //数字n
212 function number(n) {
213 switch (n) {
214 case 0: zero(); break;
215 case 1: one(); break;
216 case 2: two(); break;
217 case 3: three(); break;
218 case 4: four(); break;
219 case 5: five(); break;
220 case 6: six(); break;
221 case 7: seven(); break;
222 case 8: eight(); break;
223 case 9: nine(); break;
224 }
225 }
226 number(num);
227 }
228
229 showTime(1, 45);
230 setInterval("showTime(1,45)", 1000);
231 </script>
232 </body>
233 </html>