先上效果图:/ j2 h- b' G8 Z0 |: I
. H; Y. F' L- d( u7 K1 [代码如下:
- b' v- W0 `9 Q% r& c<!doctype html>- B- E, \9 V. i& z7 ?
<html>
& {% O6 h+ }; u1 H) V; k! s. {<head>3 F! H/ V [4 ?. Y+ ]' }4 p) D
<meta charset=utf-8>
. O3 ^7 z' r- ]+ ~; D' g2 |<title>canvas钟表</title>& X+ }: T+ n3 l9 a' Q0 @7 b
<meta name=keywords content=>; W: @; l4 M( e4 Z5 q- \9 Z
<meta name=author content=@my_programmer>
$ ^) r( y+ O; f$ o<style type=text/css>9 L" Y, _4 g9 x
body{margin:0;}8 |1 Y: ?1 m$ m' l- @
</style>6 A* c" ~, }0 e0 h- i. ~
</head>3 b" | v: N5 N% D, f. k
<body onload=run()>
: H3 K' n. u+ W& h5 L7 n3 @<canvas id=canvas width=400 height=400 style=border: 1px #ccc solid;>如果你看到这段文字,说明你的浏览器弱爆了!</canvas> p5 |- ~0 k) H, q$ I5 y# S9 F
<script>
5 u0 f6 h1 f7 H' u5 u' p& v! B. cwindow.onload=draw;
& C& `( D2 A0 W/ O" x/ t- y2 o; l& |! Efunction draw() {
' l6 }. t* {* F. c- b" s$ Jvar canvas=document.getelementbyid('canvas');! Y! x8 ~9 t/ H6 z
var context=canvas.getcontext('2d');
" d, G1 Z% B+ K# ~7 @: x( ]context.save(); ///////////////////////////////////保存
0 k% M! t2 W( E9 Ccontext.translate(200,200);
- E9 \. ?% |7 w" l& g0 B- Vvar deg=2*math.pi/12; 3 X. k& t5 W/ ^! R$ {+ m8 p1 D
//////////////////////////////////////////////////表盘3 I; e- w% l9 K* ]4 ?
context.save();
) g1 ]# o6 t$ P9 lcontext.beginpath(); 7 Z" q8 k* \2 H% e2 T1 ]
for(var i=0;i<13;i++){
3 I- x1 y0 K# ?$ I( b! P3 v& Vvar x=math.sin(i*deg);- z, G3 ?. j1 u
var y=-math.cos(i*deg);* u8 e* J9 r+ S% n/ g' M
context.lineto(x*150,y*150); ; I; U: Z V! Z0 X
}8 o+ I( o) [; o- @6 L9 U ^' a- C
var c=context.createradialgradient(0,0,0,0,0,130);% Q9 {0 z" r6 V* r* ]- j
c.addcolorstop(0,#22f);% B7 O0 V1 o2 l+ u/ l* ^
c.addcolorstop(1,#0ef)
6 M& B @1 W; l b7 n) qcontext.fillstyle=c;1 p; Y" a8 l: K
context.fill();% \6 q0 L* Y+ q* g2 N! S! X! t$ E
context.closepath();
; a& }3 M3 U" i2 Mcontext.restore(); 7 k3 c( Y+ l S) }& A
//////////////////////////////////////////////////数字
$ C" v# L! b1 ?) o$ |* A( kcontext.save();
/ h0 B4 S! H& _$ w+ acontext.beginpath();
2 H9 q# _3 h( U0 R3 f2 ufor(var i=1;i<13;i++){
4 v2 f, O6 ~1 h; ?% `var x1=math.sin(i*deg);1 S& z9 M' l: {
var y1=-math.cos(i*deg);- k7 @) v( g2 m" M1 x! F
context.fillstyle=#fff;2 n- ^5 B" l: W! I4 i; B: {
context.font=bold 20px calibri;
; t* B @. ?6 Xcontext.textalign='center';
. B- M# ?5 p) D9 C7 t# Ocontext.textbaseline='middle';3 w* Y. P: I5 [8 }
context.filltext(i,x1*120,y1*120); ' v9 b/ x, A9 u7 L* c3 g
}3 q1 b" q) d# h* S* `
context.closepath(); % w! V/ h; p/ y0 K5 V; x
context.restore(); 9 x o, m2 D+ z
//////////////////////////////////////////////////大刻度
" s5 o5 i. J* n" Q3 acontext.save();
9 |) a' H, g- t/ _7 p: }& S/ ?context.beginpath();
: W# O; W# C5 y; a: kfor(var i=0;i<12;i++){
4 c( d3 c5 h2 E, K" G2 Cvar x2=math.sin(i*deg);
) ?$ r% l8 t% N- d' o0 D5 Q- C( Rvar y2=-math.cos(i*deg);5 G# p4 Y+ Z, z1 @, q$ y6 v5 i# Q- K
context.moveto(x2*148,y2*148);
4 Z" A' w+ o( w7 R' t Scontext.lineto(x2*135,y2*135); / R3 ]! b; d5 ~/ t& H) |8 i& ^1 y+ q
}
3 C. E7 w5 l( _. P+ f$ j( }1 J. y; qcontext.strokestyle='#fff';
2 N0 g U( b/ I9 K& U9 F' Bcontext.linewidth=4;
D& O; ~( ~7 l( Ccontext.stroke();
+ O% ^+ @9 M* [( D/ bcontext.closepath();
2 B4 I4 N6 r7 K# c" z1 }* jcontext.restore();
* ^7 m( u- _0 B0 f3 {. d4 N/ ^//////////////////////////////////////////////////小刻度
3 o. q# K& i4 Tcontext.save();
% j/ L3 i! T' ~7 Pvar deg1=2*math.pi/60;
# T, z) s s3 c0 u8 {! t3 i( Tcontext.beginpath();
, F5 P* P4 z; U3 X4 h' x: Yfor(var i=0;i<60;i++){% b0 \1 `" U! S9 I
var x2=math.sin(i*deg1);
% f) d( I0 m& l7 U2 L; L+ ]5 v3 Kvar y2=-math.cos(i*deg1);
d m# s: A: Q& X7 |& vcontext.moveto(x2*146,y2*146);
2 w, U# ?1 C* M. }8 e9 ?context.lineto(x2*140,y2*140);
1 B6 E: {- B4 k3 S5 n% m" N}
5 D# [% E+ d3 `* d+ k0 acontext.strokestyle='#fff';& \( w" e5 {6 S
context.linewidth=2;
; K( p# [- F F% ]* Z: mcontext.stroke(); L: l8 q; {7 I
context.closepath(); 8 M9 y6 }0 e# |" ~* W
context.restore();
6 d. o; t$ t+ P; S; g* ~7 O }///////////////////////////////////////////////////文字
4 Y L p/ B) E8 G1 [context.save();) `) i2 y- l$ ]! b. Y2 Q
context.strokestyle=#fff;
: F% x* F8 y. q3 T: Z2 ncontext.font=' 34px sans-serif';/ \! O( G+ k: o a0 G" S* R5 L' u
context.textalign='center';6 J+ t7 q0 T1 ~" A3 r) Y3 ]9 @
context.textbaseline='middle';
. J* h5 @ W9 vcontext.stroketext('canvas',0,65);
, d& S+ O N; o+ y' ]( R; Dcontext.restore(); ) ~$ @9 l9 g5 u) V: o5 h
/////////////////////////////////////////////////new date& N" v2 ?$ U6 \) }0 h
var time=new date();
( V' F* o! y6 a& {3 }var h=(time.gethours()%12)*2*math.pi/12;7 H: Y, ~8 H" q& A# N k) i
var m=time.getminutes()*2*math.pi/60;
0 z) @' P0 q- r6 ]var s=time.getseconds()*2*math.pi/60;</p> <p>////////////////////////////////////////////////时针: p5 T6 O% }* x7 F7 {6 |0 _
context.save();# F& V. _( j5 v; A( k
context.rotate( h + m/12 + s/650) ;; p4 T4 W0 ^- r" l( I& h
context.beginpath();' |, T1 s/ {: H. {
context.moveto(0,6);
; }* {' {' u, `0 ?5 s6 x. }8 mcontext.lineto(0,-85);3 W' z) O" l I7 V Q
context.strokestyle=#fff;: c' V! I- L6 ~$ f
context.linewidth=6;
3 [) [0 g1 l0 k* X7 s5 scontext.stroke();' J' Y; Y' l# z4 g
context.closepath();1 P/ i% v+ B& V3 I6 o
context.restore();
3 y) R& R! E- ~5 T( w//////////////////////////////////////////////分针0 ~# T, b# B6 f
context.save();5 c* v2 E6 R9 z6 |
context.rotate( m+s/60 ) ;* B5 k* e; \' c7 j: U
context.beginpath();
' W( c# P5 u. U8 ocontext.moveto(0,8);
9 q( K! u: I! h2 fcontext.lineto(0,-105);
& A F! {2 \. J& ^* I2 H% r+ T8 Hcontext.strokestyle=#fff;
) N+ @5 m% f' y, C& N) \1 gcontext.linewidth=4;3 ~% I- ^+ ]/ v n- W$ P% Y
context.stroke();) k" t" H$ P) ?, s9 h
context.closepath();
# a- _8 u. Y. q" ~0 l) @context.restore();% M. Z* i7 G; f: N) _2 I$ t8 I
/////////////////////////////////////////////秒针* ]6 ?% G! a6 q6 q) e
context.save();
( w( c* e5 c( [2 S1 g2 `context.rotate( s ) ;& Y+ v$ [ t' p+ c% U5 S6 H* Q
context.beginpath();
2 \" ] S( G4 T9 Zcontext.moveto(0,10);! `2 N) C9 R( a+ ^! C8 O/ T. n0 _
context.lineto(0,-120);
; c' @+ N3 M( R$ P' ucontext.strokestyle=#fff;. y- ?8 Z O% {# n7 L1 D
context.linewidth=2;
& ]/ `, i* Y2 n. [# x+ g' Kcontext.stroke();" p; u2 k7 P/ [& ^
context.closepath();1 L6 H1 J: g' O) i% ^) \! J
context.restore(); ; H" v- S/ b: u$ q
context.restore();/////////////////////////////栈出
I9 M7 r2 w2 ?3 a- x9 Z! Y Q' Isettimeout(draw, 1000);/////////////////////////////计时器</p> <p>}</p> <p></script>( {" J1 t! S9 N' t P3 L5 Y
</body>
' M' n3 B, t8 a3 |0 y0 W- d% {- Y+ H</html>1 G4 I0 e% u! a+ Q
0 |, i. n& N Z$ q: [
更多网页制作信息请查看: 网页制作 |