先上效果图: i v2 k/ O4 U8 k, i! }6 s
7 r9 a2 I0 W1 R代码如下:. Y1 u& V0 O. F- |
<!doctype html>
3 b5 B" a4 Z$ b$ I7 w- c<html>
1 {; G% L2 c$ m5 x4 F; Z$ R. w; C<head>+ L1 K ^! d' o
<meta charset=utf-8>4 m* h; D' R& D( ^
<title>canvas钟表</title>
- h) d ]# D% s5 D<meta name=keywords content=>! [4 n$ T. k6 @( i
<meta name=author content=@my_programmer>
1 M) K! v) e4 `+ W" V<style type=text/css>8 A5 p, c" a# x) s3 d
body{margin:0;}% Q4 }2 `! b- G, _1 O) P7 Z" ~
</style>+ w8 ?+ t; {5 g: U% j
</head>5 q! ?# b1 I* X P# Y( t M/ O$ v
<body onload=run()>
+ ~ @. l2 E0 V1 N. c6 r<canvas id=canvas width=400 height=400 style=border: 1px #ccc solid;>如果你看到这段文字,说明你的浏览器弱爆了!</canvas>
( l1 R* M# D( W+ d1 \<script>! P! c% g% Q& _/ J9 w3 K
window.onload=draw;
7 Q+ E' q; Z+ f: L# q" }) j6 ^( yfunction draw() {, U5 r+ R0 N6 W6 J2 E
var canvas=document.getelementbyid('canvas');
" a0 l A7 W- s( E7 Ovar context=canvas.getcontext('2d');
9 V+ o/ O9 l# w" ~: b; {9 {/ vcontext.save(); ///////////////////////////////////保存
* D. t7 U- b" w1 ~4 `context.translate(200,200);* n2 Q- k+ B" Y3 c& D
var deg=2*math.pi/12;
9 k8 s$ v9 |# M: \! Q//////////////////////////////////////////////////表盘0 H# W7 ^2 ^5 V# B+ h
context.save(); ! _- I8 x0 a0 Y t: Z8 y' [
context.beginpath(); + t3 M( G2 ]' [+ T# B5 E) A
for(var i=0;i<13;i++){
. B4 c; ^/ p: V' \8 X( u( n* Ovar x=math.sin(i*deg);
) R, `. P1 z( [9 B+ ovar y=-math.cos(i*deg);/ [/ I' q- Y. w. J5 b! D" h
context.lineto(x*150,y*150);
4 ^% @( G: I4 }. f3 D5 K. q}
' [' O1 C; }1 X% O2 T* F" i2 t+ [var c=context.createradialgradient(0,0,0,0,0,130); I1 B2 r$ y$ b2 K, ^1 g8 [
c.addcolorstop(0,#22f);! y( w9 r* a7 e, b5 q
c.addcolorstop(1,#0ef)
* S6 e) m' h/ T" o1 G0 y) v" Jcontext.fillstyle=c;* t! ~) k1 M8 G/ X8 t2 ]
context.fill();
' e+ a! d2 i* U! ?% i$ i# Ycontext.closepath();
( u- _: P# ^! b; tcontext.restore(); & z, S; H4 o. l( C9 t& t
//////////////////////////////////////////////////数字7 S2 f, I& d2 m$ e* p. i
context.save();, P4 ]. b$ J' U1 _
context.beginpath();
: `& H8 f" N' {( |+ S) Ofor(var i=1;i<13;i++){
' p) Z9 v% F0 {' F$ |/ hvar x1=math.sin(i*deg);% Y, D3 W+ Z2 Q, B
var y1=-math.cos(i*deg);
9 E! U- L% _, L1 J' ]* o$ ucontext.fillstyle=#fff;8 `' d1 k, r& R2 n1 x3 \, D
context.font=bold 20px calibri;& J7 M6 z8 C3 S' u9 q. f: }0 J
context.textalign='center'; r; k$ Q0 B% Z2 d1 T! m5 \. ^
context.textbaseline='middle';
0 B+ f" ] G' u! T& Z: _context.filltext(i,x1*120,y1*120); 2 _7 F: {. Q% u0 j7 @0 v6 ?, @
}) w; X7 t/ {: I! E0 ^; D+ f
context.closepath();
, `$ h# A7 |. l. L2 B9 Mcontext.restore();
* g* R$ p& i: E4 X7 t5 g" C//////////////////////////////////////////////////大刻度! l) x0 C2 O6 j+ u A1 L* i
context.save();
2 z1 U J0 \- f6 gcontext.beginpath(); 7 C$ U& [7 L) H7 d: k
for(var i=0;i<12;i++){/ ?/ {5 E) c- ^' c- U
var x2=math.sin(i*deg);
* w/ t% R! B8 W. B: Svar y2=-math.cos(i*deg);3 I4 k# a1 f4 N1 h8 ]: N! y4 E6 f! k. t
context.moveto(x2*148,y2*148);
8 c3 z( \& S* N# r, H4 Mcontext.lineto(x2*135,y2*135);
" V+ `/ z3 j; r}
_9 X4 H4 R. econtext.strokestyle='#fff';
: \5 ^' s* f Jcontext.linewidth=4;9 V% ?5 H* V4 Q7 h4 I6 V
context.stroke();
% N* X* S7 H0 I0 }) ^context.closepath();, w; x8 D4 a7 W6 Z* P
context.restore();
, U1 T, P0 s- {/ x! b% A//////////////////////////////////////////////////小刻度" N& i1 e/ U1 N4 a6 e. S3 R
context.save();7 @; O7 v( n8 e6 z! Y3 E, c
var deg1=2*math.pi/60;" a6 {. P2 T6 w/ O
context.beginpath();
3 H9 x" s1 {& J! H/ d7 R ^for(var i=0;i<60;i++){
1 i, w# U: c2 k8 Vvar x2=math.sin(i*deg1);5 K2 M) V" E8 v) W4 E1 ~$ T% J/ m
var y2=-math.cos(i*deg1);# Z. _9 T. d/ G9 X5 p: D
context.moveto(x2*146,y2*146);
8 j R7 t5 n8 v9 pcontext.lineto(x2*140,y2*140); 2 W1 E5 R/ k$ Y) V8 i6 q
} # G1 }8 n8 B7 N. B
context.strokestyle='#fff'; w$ R2 h6 U# ^- M4 k4 J
context.linewidth=2;
3 N( t, n) h* k: Z6 S) C9 t Hcontext.stroke();
0 Q! n# w+ K4 A$ D! d; E x/ |9 [, tcontext.closepath();
4 n% A- b7 O# g) _! F' econtext.restore(); , c+ P0 z2 `* l9 R! b; S! Y+ g. k( F
///////////////////////////////////////////////////文字
' d! h+ S8 y' @3 w! l9 Y! ?) zcontext.save();
' H5 }6 s0 x0 @; V7 ^# ~context.strokestyle=#fff;
1 r3 E2 \: y' wcontext.font=' 34px sans-serif'; |) F, m, `* B6 z& g+ [
context.textalign='center';
8 G" `3 |+ {! ^. X& g6 D% O" bcontext.textbaseline='middle';
/ Q' W2 I9 N" {3 ~5 w9 Scontext.stroketext('canvas',0,65); / F' R3 H; w6 v# u
context.restore(); $ L+ c! f5 x1 h+ ^. e8 |
/////////////////////////////////////////////////new date
2 {' p% K- ? t0 P; k0 ?0 pvar time=new date();
' o: p; ~! E( o- M* E7 W. v7 ?var h=(time.gethours()%12)*2*math.pi/12;2 A8 L) k# R2 q
var m=time.getminutes()*2*math.pi/60;
7 S4 E$ S. O+ }7 I; B3 fvar s=time.getseconds()*2*math.pi/60;</p> <p>////////////////////////////////////////////////时针
* G, G0 B" x2 n6 Tcontext.save();
6 g q$ ?! ~/ R% i1 \2 h) ~context.rotate( h + m/12 + s/650) ;, L0 B {0 _9 c( [5 T' b
context.beginpath();" [5 e4 p! m& ~# x, N
context.moveto(0,6);
: q% L) d- ~& y, r) v& Ncontext.lineto(0,-85);! U2 ]+ s2 W0 W+ x
context.strokestyle=#fff;
' U) Y+ ]0 `9 |& t* bcontext.linewidth=6;
0 w; @+ c4 O: @, Qcontext.stroke();4 U1 R1 M: R5 }0 @0 @
context.closepath();
5 A, Q+ k3 b2 s R$ bcontext.restore();
& h: k4 R! h& d8 y Z. {9 g j//////////////////////////////////////////////分针
6 P/ F7 } A4 v S' Icontext.save();& {8 x6 @% ^+ f5 j. ^) }, i% O
context.rotate( m+s/60 ) ;6 f5 O) h) Z8 Q- [
context.beginpath();
2 s( f& H; d! ~! @" }5 R7 P, T# Hcontext.moveto(0,8);; ^/ [0 z; ~! v( v3 ^* ?: ~. ^
context.lineto(0,-105);
+ d, t- n2 _5 i1 G! ]; v! kcontext.strokestyle=#fff;
}/ z' V5 J8 @' B5 Q- acontext.linewidth=4;: c; s, H& A- K
context.stroke();- u; p/ y. u0 w4 e% a+ I4 s% x
context.closepath();# y0 g2 J' G1 }
context.restore();, ]& g4 g; t0 V7 ]
/////////////////////////////////////////////秒针2 H+ A' Q4 g L
context.save();8 ~; w1 d* `& C* s/ W# }0 d
context.rotate( s ) ;9 B- w& z5 b3 {/ [7 i
context.beginpath();
& v" `5 ~ h4 N/ g O/ l/ Tcontext.moveto(0,10);! \$ G9 r: t& n& u2 @
context.lineto(0,-120);8 s, T2 b( H9 p. u/ o& R
context.strokestyle=#fff;
1 ]2 P F1 s& X q4 J, ycontext.linewidth=2;0 d$ A |# ?" Z1 @* `# R
context.stroke();$ T+ H0 Y9 @$ {& K: s7 \2 D
context.closepath();
0 R# w) ?3 R$ V4 i* Gcontext.restore(); 3 s2 E9 L; Z& u" J! f
context.restore();/////////////////////////////栈出
3 d/ q$ K$ A3 K6 A; Y$ Vsettimeout(draw, 1000);/////////////////////////////计时器</p> <p>}</p> <p></script>" ~0 e% R9 ?: `- I9 T3 N
</body>$ s$ z: j6 y7 |" N' D
</html>
5 [5 ?8 h7 f* Q, i7 I# {' e
9 r; J5 u9 |3 G( Z9 L7 @更多网页制作信息请查看: 网页制作 |