先上效果图:8 ^ ^+ ]# p5 `, a/ p8 p2 I
0 m: q$ Q' h0 Q1 Q
代码如下:& o& f. W9 B9 [
<!doctype html>
( d; q/ @8 {$ D" N<html>$ A& d9 h5 j' P9 T. g8 l2 O7 _
<head>
" s. Y) {( ]7 f8 e/ y7 h1 k: e% w( g<meta charset=utf-8>1 O% x/ @9 j. c! t
<title>canvas钟表</title>
: g' e! E0 l9 Y; D<meta name=keywords content=>& u% c. _& E! n/ O: A+ b7 x
<meta name=author content=@my_programmer>
7 |. A5 U( P" G5 u2 p* }<style type=text/css>8 L/ R0 ]" k I; ^$ k' G+ t( _
body{margin:0;}
2 }5 j$ X0 y) @7 a ~" k3 M# I</style>( \8 `& r/ D Y# m. C0 n
</head>
8 j& h. E g- Q" U$ ~0 z1 A<body onload=run()>: ~3 ?+ u& L; }: Q0 T+ t( n" @& [
<canvas id=canvas width=400 height=400 style=border: 1px #ccc solid;>如果你看到这段文字,说明你的浏览器弱爆了!</canvas>' [/ M" _% f% e* f6 w
<script>' J. {9 N0 X k* R
window.onload=draw;7 p' H( U/ g- u4 F3 [# r
function draw() {$ C3 T1 T8 C' }- Q8 k0 M' \
var canvas=document.getelementbyid('canvas');
2 z* O# s% o, `5 zvar context=canvas.getcontext('2d');
Y& |* J# Q* }/ Z$ `# p0 Ncontext.save(); ///////////////////////////////////保存: K6 ?& P0 J8 o7 c0 |# h2 X
context.translate(200,200);
+ S8 N3 O! q* i' U; \! V9 Xvar deg=2*math.pi/12; ) b; M$ L3 w) B; M
//////////////////////////////////////////////////表盘
3 q( q! @ L* e7 }" S4 }1 h. Qcontext.save(); 9 u$ q2 A1 ^) k1 q; M J1 q
context.beginpath();
7 a8 X3 q( |& C2 S( {' q2 Kfor(var i=0;i<13;i++){
' L" G8 E* ~" o0 u7 w- Avar x=math.sin(i*deg);
% h0 B. N: } fvar y=-math.cos(i*deg);
) f7 O8 A5 e) k. bcontext.lineto(x*150,y*150);
% O2 q& A( d6 [6 Q' t) @}
! _+ v7 S2 T# d2 t8 r% C2 {var c=context.createradialgradient(0,0,0,0,0,130);6 w* j; G6 |* _. L/ E- M) |
c.addcolorstop(0,#22f);
7 M& l2 l& X W; i1 n+ W: ^* Sc.addcolorstop(1,#0ef)
: a( l# S: ` @2 M% ^. jcontext.fillstyle=c;
: @/ Y; V; W- W7 B3 vcontext.fill();
+ p5 G+ n2 k5 i) O1 B# O qcontext.closepath(); + r( E% x X4 i& h8 _! v4 K
context.restore();
4 f* |9 f$ d7 Z; i" H/ A//////////////////////////////////////////////////数字$ a; m# K- K* x1 ^
context.save();
3 Q8 ]+ s1 Y; ?context.beginpath();' }1 t! g, `4 d; {' Z+ l( G+ m8 @3 l
for(var i=1;i<13;i++){3 t! T5 x+ A8 Z7 g
var x1=math.sin(i*deg);
: M6 y2 [" ^9 r- {- t+ fvar y1=-math.cos(i*deg);
0 ]) x( N; ~% g0 P# Y& rcontext.fillstyle=#fff;4 q# n( k7 V9 ]7 E
context.font=bold 20px calibri;
+ B8 k' P( R+ acontext.textalign='center';% N8 |. c+ D# v* W
context.textbaseline='middle';8 q; @. G$ r- `* I+ l
context.filltext(i,x1*120,y1*120); " K2 [7 I# I& i
}
% |, i( W* e% D5 [ W! ccontext.closepath(); 2 z$ @4 H# f2 h+ _0 g
context.restore(); ! q& m& q( m* Y/ w5 Y& x8 z$ ?- e$ k
//////////////////////////////////////////////////大刻度
1 w w5 c% } G. ?' Vcontext.save();
" \! T2 l F1 b( s) S% }context.beginpath(); * v# h+ U: b4 l; O! ?9 M
for(var i=0;i<12;i++){
% R8 e! z! k- g, n1 fvar x2=math.sin(i*deg);- ]* l) p9 O j! k m
var y2=-math.cos(i*deg);
0 D5 R* d) K8 I! icontext.moveto(x2*148,y2*148);
3 L6 D' }) g8 U" Fcontext.lineto(x2*135,y2*135); ; b- s, S1 X0 {( r* H
}
& X1 l0 E6 x4 _; o! t1 |8 I! v- x" hcontext.strokestyle='#fff';
) g6 P; A6 S' C- b4 H+ _* Zcontext.linewidth=4;4 | x/ m4 [6 S: X* B+ ~ g
context.stroke();
3 g/ C3 |# O3 f, V0 |context.closepath();: P& S% D+ l% i8 u2 x+ Q6 l
context.restore();
! B! w0 z6 Z" {- R2 |1 {9 z" l//////////////////////////////////////////////////小刻度+ N7 E' |, u, t, F# n
context.save();% j7 K8 U- c0 @. s4 s$ q" p4 E( f
var deg1=2*math.pi/60;% {: u- L1 u+ ] Z z6 k$ m$ v% n
context.beginpath();
$ R. @! k) g! J" e# K' ^) S) Hfor(var i=0;i<60;i++){& u$ |7 q* V* R# E* H" S- m
var x2=math.sin(i*deg1);
1 @3 T- F* l. a: B0 ? uvar y2=-math.cos(i*deg1);
3 S- W1 F0 D/ m, @6 t w" Ucontext.moveto(x2*146,y2*146);
2 G" v+ [; z& c' ^' s5 [% Icontext.lineto(x2*140,y2*140); 2 A4 m) v$ b+ P. T6 C. X7 m
}
& r& ?' u& K# l' \$ [- w' i2 t# xcontext.strokestyle='#fff';# @6 h8 P9 E: o6 }, Y
context.linewidth=2;5 E; ?4 ]4 w+ Y1 u) @' v
context.stroke();& S, {9 _- j( R& m" _0 O- u
context.closepath();
* K+ a3 }1 l. y" }1 K8 d$ U: u w: q0 ~context.restore(); & @. O+ Z2 z' t) n8 Z' E
///////////////////////////////////////////////////文字
0 ~) `: [; r9 r" o' l6 Acontext.save();& c( }' x. T/ W
context.strokestyle=#fff;: W4 `: S1 p) g9 q
context.font=' 34px sans-serif';! y* ?# b4 ?8 i* T# A, e2 l
context.textalign='center';7 G, M0 ^/ g( l& m6 A
context.textbaseline='middle';
' L! K+ g2 Q$ e3 J3 A( Ycontext.stroketext('canvas',0,65); 5 z) y" _4 L/ m* x* H! p' D' X! w
context.restore();
0 H# N! i, D+ b3 U0 u1 h p/////////////////////////////////////////////////new date
! g! A$ m2 M; J% } A* [4 mvar time=new date();
# |2 g- q \- ]- m3 Bvar h=(time.gethours()%12)*2*math.pi/12;
" h; z4 L3 ^# gvar m=time.getminutes()*2*math.pi/60;
Z* {! T% n. X3 A, kvar s=time.getseconds()*2*math.pi/60;</p> <p>////////////////////////////////////////////////时针% j' p g6 [" Y, \: O% m' A. F
context.save();
- `& B( z( C# k1 b. P) |0 {context.rotate( h + m/12 + s/650) ;
1 E8 V( w9 I- y6 Econtext.beginpath();/ x' e F- i( [" l) G
context.moveto(0,6);; A3 Y1 M- s# h, w! S6 ?- s
context.lineto(0,-85);$ r( e9 N7 y2 c
context.strokestyle=#fff;
( L, S% O p Icontext.linewidth=6;
4 d; K" ^( Q; G! c5 Scontext.stroke();
; }% b. g! V* ~4 q7 i, l/ jcontext.closepath();
2 R- h8 T2 ~/ `) X) ocontext.restore();% c! `- z+ Q V' @- M
//////////////////////////////////////////////分针
# N# j; `( ?5 R# t& r8 Z/ Y/ V4 ?context.save();
0 K0 c8 D/ ?. F2 _- H1 X6 acontext.rotate( m+s/60 ) ;
6 H0 `$ L$ T& e: A! T- _$ t, u& econtext.beginpath();
. B" S# B0 }1 W0 x5 s9 B& Lcontext.moveto(0,8);
' W6 a5 \; U+ {% b1 Wcontext.lineto(0,-105);
3 p# b2 l% j6 h" A- U5 p, \% econtext.strokestyle=#fff;
! F) r' x( r, n3 E/ x* ^" Qcontext.linewidth=4;
& s3 P* y; x) @0 d0 ucontext.stroke();
( {" C6 ?/ Q- b8 i1 d7 I7 C3 V8 bcontext.closepath();
% j/ I* a q3 g! J! l$ `1 |- H6 ycontext.restore();# ^8 @4 R! {. ?' W. ?
/////////////////////////////////////////////秒针
, M% b0 {8 d1 n8 Y% Scontext.save(); z, D, }# U+ F: Q# N+ f# ^" @
context.rotate( s ) ;- D& T* q( c3 v2 C4 ]/ H7 f
context.beginpath();9 X. G# N" p" e6 P& a# N* E, D
context.moveto(0,10);+ i- Y1 W* ?" c9 i, i. |
context.lineto(0,-120);
! Y( P4 _" T+ t7 U, v3 W$ gcontext.strokestyle=#fff;$ ?# W: N1 M8 {, e: `2 P
context.linewidth=2;1 |6 ~9 |0 r0 l$ G5 h0 b9 I
context.stroke();, u) W# r1 Q* w$ K1 }) w
context.closepath();
0 _. [4 P- f ?- h( O) D2 Y) `# E1 `& ccontext.restore();
, z* K+ K2 ^; P% Q! ncontext.restore();/////////////////////////////栈出9 r) L2 c9 _! u, p) G1 l1 y
settimeout(draw, 1000);/////////////////////////////计时器</p> <p>}</p> <p></script>7 o S2 S, f, s- K
</body>
! n5 h3 X; R( z1 P</html>0 {3 L+ t, n; Q+ @ W$ T
6 e! M9 D& K' P o- F9 k更多网页制作信息请查看: 网页制作 |