先上效果图:
+ h; ? f9 f# v" w9 C* @
/ B3 U4 \( J7 W: ]5 a$ T代码如下:2 k+ z0 C9 D+ ~ G
<!doctype html>
, d" T: h! h) }; S1 o<html>) \ l: o2 y. q
<head>3 E- ^: W4 N4 ?5 m8 A9 p7 p) l
<meta charset=utf-8>
2 j, e4 ?& n* P4 T<title>canvas钟表</title>- a: D6 f, l! D, [
<meta name=keywords content=>
) X! X; i3 i! Q$ w<meta name=author content=@my_programmer>/ e# v* S* x) b+ R% S7 O8 ]( ~$ l
<style type=text/css>, b1 X, W! }2 [+ H
body{margin:0;}" h3 d9 y/ Y1 X1 A0 ^
</style>
! U L6 M" i2 m( G/ F: Y- Z+ I% Y: I</head>5 k! M$ ?' q. t9 {) s8 [
<body onload=run()>8 P U8 b5 P @: x4 A. V2 c
<canvas id=canvas width=400 height=400 style=border: 1px #ccc solid;>如果你看到这段文字,说明你的浏览器弱爆了!</canvas>. k4 ?5 E3 A* J' Q- c
<script>
1 o8 t( F* _$ h* x( a4 twindow.onload=draw;: o% p7 p9 Y$ D2 u8 k. B" K
function draw() {& a. W1 R; _% P8 G
var canvas=document.getelementbyid('canvas');1 B7 C/ M$ s8 Q* `4 l5 w
var context=canvas.getcontext('2d');
4 E$ p9 y7 D- |# t" Scontext.save(); ///////////////////////////////////保存) G" O- S" M2 |
context.translate(200,200);& d; H8 }) G# m. X/ ~) B; o
var deg=2*math.pi/12; 1 w9 e5 i* {( D. L
//////////////////////////////////////////////////表盘; z5 S2 w8 O: v1 h9 w3 y
context.save(); 5 ^# Y9 t+ W$ h
context.beginpath(); ) j `. y3 i3 j/ f0 ]
for(var i=0;i<13;i++){8 A. o1 u: b0 `5 j/ s
var x=math.sin(i*deg);% j* ?: Y; N# I( Y/ h* d9 y* S5 H6 i
var y=-math.cos(i*deg);' G# p' w& B) a2 f m
context.lineto(x*150,y*150);
0 ] j% w4 \2 {* h' |2 i1 }! n# [}
- h- L8 X9 `' t: D, s) Dvar c=context.createradialgradient(0,0,0,0,0,130);: X) o1 d$ c8 V
c.addcolorstop(0,#22f);* u6 U# c3 @# f' M
c.addcolorstop(1,#0ef)
8 Z! C, o6 v b. fcontext.fillstyle=c;
. L% D, N$ `$ }: M6 K& G$ ocontext.fill();
# U; `' T& z. jcontext.closepath(); 0 i- `* W/ [$ B( I; V% S9 N
context.restore(); " q F, u, q" N
//////////////////////////////////////////////////数字) v4 Y9 p: v* z/ n
context.save();
Q( \; I% c3 Z6 ~context.beginpath();
# Y* W! U- ^. _: cfor(var i=1;i<13;i++){" o# M( p5 `2 q3 G! ~) t
var x1=math.sin(i*deg);; R7 A2 ?2 X; L
var y1=-math.cos(i*deg);
3 J8 h3 m+ q Ncontext.fillstyle=#fff;
" H1 ?4 q0 H, w; p4 \context.font=bold 20px calibri;$ ]8 k7 S3 y4 s* C ~/ O: i
context.textalign='center';
0 \; E" c D4 L! h9 |context.textbaseline='middle';; C2 }6 W4 X- {1 U) D8 h' j i6 ]
context.filltext(i,x1*120,y1*120); # ^8 J2 m1 n. {2 U
}% K: W }$ u8 N
context.closepath();
3 e8 s M* z% \context.restore();
& a8 Z! B) j: S8 I l% O6 c//////////////////////////////////////////////////大刻度
4 {- P3 m1 ]- w, n5 k7 gcontext.save();
, a6 C' C# t4 Y( E Ucontext.beginpath();
" J0 w8 E4 D- H7 d2 lfor(var i=0;i<12;i++){7 {' D4 `: [6 |) Q, E( R; B, d- F
var x2=math.sin(i*deg);7 A" d. I3 p6 p- ~5 s
var y2=-math.cos(i*deg);. H, h+ R2 p \! u& n$ C- l
context.moveto(x2*148,y2*148);3 g3 Z; c7 P: z* I* K: {# X0 { x
context.lineto(x2*135,y2*135);
' ?& s8 G$ G! a8 g3 `! Z; f} - L! _' F/ f/ d0 s* R% e) J
context.strokestyle='#fff';4 c" D9 o1 \4 _" o8 Q
context.linewidth=4;4 [4 }9 G! R: W0 E. ]$ x
context.stroke();/ i5 k6 y9 G4 G) i& D, I
context.closepath();
1 P$ u' P a" O1 W, g2 Bcontext.restore();
3 k6 T1 ]/ R! @0 ?//////////////////////////////////////////////////小刻度
( T2 R4 p) T7 |/ a) Kcontext.save();4 ]4 }' v: r% I" K" T ?
var deg1=2*math.pi/60;
0 ], N: _4 H6 t/ _context.beginpath();
+ c- M3 Z; e. n4 a& p; C7 e ~8 Y& rfor(var i=0;i<60;i++){) O0 q; [1 G7 D6 a; a9 V
var x2=math.sin(i*deg1);
4 N0 K/ w4 v Q9 _- w: mvar y2=-math.cos(i*deg1);
% E6 B0 e0 W9 u# {context.moveto(x2*146,y2*146);
2 E: `: r" H- I5 }, u# k+ ?" c Icontext.lineto(x2*140,y2*140);
' r+ W+ v. ]6 K) a} ) |+ a3 A! a' v; H$ n
context.strokestyle='#fff';: w0 v8 e* W! e, G/ E& B
context.linewidth=2;: }2 q8 i5 \0 b$ |1 y: X
context.stroke();
4 T, L) b! ]+ Rcontext.closepath();
/ O9 o; l) {' l' [# jcontext.restore(); 1 I# W* x0 y; l/ O
///////////////////////////////////////////////////文字
/ |: P8 I+ c4 a/ ]- j' Ucontext.save();' \; w! ]1 I2 t$ M6 r( Z" m }- t
context.strokestyle=#fff;
- D. I8 S8 V2 A6 j% R: H) hcontext.font=' 34px sans-serif';
% ?- p9 f; s* j dcontext.textalign='center';( \' J j2 L$ ^/ C0 n
context.textbaseline='middle';
* v1 ?4 Y2 T% i& h0 B+ s+ v2 Lcontext.stroketext('canvas',0,65);
: L6 z& u0 t+ }- P. \context.restore(); 7 F( d' x6 {- {! t' `
/////////////////////////////////////////////////new date+ K% W5 p4 G: @# C1 z+ f- i
var time=new date();1 S& N3 N; m/ A7 C+ _7 T
var h=(time.gethours()%12)*2*math.pi/12;
6 Y, D" j8 y1 k# E4 Q$ I! Bvar m=time.getminutes()*2*math.pi/60;
) q6 W: _' I# T+ k+ m) W" {8 Y3 {var s=time.getseconds()*2*math.pi/60;</p> <p>////////////////////////////////////////////////时针; f" ]+ T5 [6 ~) U
context.save();4 N. O b7 U- f; _$ `7 x
context.rotate( h + m/12 + s/650) ;
- @& V6 ~1 n; w/ D' o* B/ vcontext.beginpath();
1 Q2 \' G' O3 R. {: Fcontext.moveto(0,6);
! m* p" h% n9 |) f" }context.lineto(0,-85);2 o3 l& ~- u3 F. c- ?* S* r
context.strokestyle=#fff;
+ g; F n! @7 W9 l% ^context.linewidth=6;8 E8 m" W: e) I7 W" q' n
context.stroke();7 t4 o5 }; t. p8 U3 a+ [2 E J
context.closepath();
! b+ [# b' m; k' V( s, i. Lcontext.restore(); B3 G& S& H: S# u7 X5 Q' A/ N
//////////////////////////////////////////////分针
& k6 i' k0 w* `7 W4 Pcontext.save();
; u$ u! g0 C! Q2 x s8 F3 X( k* \" econtext.rotate( m+s/60 ) ;9 j' \' |' n, z" N. A g' H. N
context.beginpath();
- {8 I, N. Y7 u8 ccontext.moveto(0,8);( r. o* h, j& B8 R4 z( b
context.lineto(0,-105);
0 q6 ~ ~, y0 F. xcontext.strokestyle=#fff;1 M4 C4 {2 ]* ~! X/ }. |
context.linewidth=4;- L, z+ L0 k5 B0 w$ c$ T; I$ \4 Q; `
context.stroke();" q4 B, o4 Z& P/ X
context.closepath();1 W& e. q0 h* i" w
context.restore();
- c1 ~7 F E9 E& R- z7 G/////////////////////////////////////////////秒针
% \' E/ v7 f7 r" L- vcontext.save();
- T& C' Z" a- F- P4 ^context.rotate( s ) ;8 s% T3 \* ~( o$ @* W; S. n
context.beginpath();2 R. C* W7 u7 y' ~" ^9 {3 B6 H
context.moveto(0,10);
$ t1 l5 E& U; H7 z: M8 lcontext.lineto(0,-120);' U4 z2 c+ W' y7 m8 P6 J* O- n9 m! V
context.strokestyle=#fff;; ~/ B) s+ r4 v
context.linewidth=2;) x% Z, S- a4 v5 @" Y
context.stroke();- l6 e1 V& y9 I5 e4 O$ I5 l
context.closepath();
7 K7 M; J6 u7 |2 L' Jcontext.restore(); 4 C: [( u: t* Y* d" o
context.restore();/////////////////////////////栈出; Y6 L! l7 a( i; l" ^
settimeout(draw, 1000);/////////////////////////////计时器</p> <p>}</p> <p></script>2 W* n0 y8 J2 V. \- w# t
</body>
, Q% P' k8 I' g( j" P, e# g</html>* ?2 C& f! J- T# r3 {
9 L2 ?8 k, l8 d- S: n
更多网页制作信息请查看: 网页制作 |