以前用canvas画图时,都是直接在canvas标签里直接写上宽高,没有问题,但也没有探究过为什么宽高要直接写在canvas标签里,因为各个资料的例子上都是这么写的。今天王sir提出了一个问题:如果把宽高写在<style>里,看看会有什么不同。自己试了以下,果然有问题。( V+ J6 i6 {$ X: \# z" }
先看一下代码:5 T/ `, Y! i, b1 T7 T' u' h
代码如下:
5 Y0 A) X, l/ W% ~+ b. e<!doctype html>( n# C* G- f, j( f% I; R
<html>
( R& ^. N f& y<head>% f: W4 g2 }6 o& I" Q- b# H0 {" k4 {2 p0 @
<meta charset=utf-8>
7 h) a6 B; H0 x% H. A<title>canvas</title>4 N/ K' j+ `2 }- ~
<meta name=keywords content=>* K7 {/ V5 O6 Y+ d& H$ j# {! x# J
<meta name=author>6 H4 E3 O6 P& u1 s3 N
<style type=text/css>5 ~& D' L: T( u: o' o& X
body{margin:0;}
: W$ e" h' o6 c7 M" Ncanvas{margin:20px; q3 |1 ]0 R2 E6 C- |& S
/*width: 400px;
' k' \$ Y& F zheight: 300px;*/
% }& y4 L! i: i}) w9 B8 ?. \! V/ ~( s9 v4 j+ ?
</style>8 q h" o& u& E* n
</head>4 l/ D6 s- Q9 U3 q4 w9 a* ~
<body onload=draw()>
+ _7 J$ K. Q. h" W" \' A& @<canvas id=canvas width=400 height=300 style=border:1px solid #f00;></canvas>- ~, L- D5 d( h% L
<script>
+ ]+ X5 J# G# ~) p# G3 pfunction draw() {
' w$ L3 _! M {0 n# q+ E" B( svar canvas=document.getelementbyid('canvas');
6 i: x" L* E7 x1 D* L- C6 k% P. Fvar context=canvas.getcontext('2d');
+ ]8 j, m5 p. D$ g3 @context.beginpath();5 ^( I1 W; d2 D" g7 G
context.moveto(20,20);
7 S% X. q) j2 O+ p) Xcontext.lineto(200,100);7 a4 f) Z! s* _: V# {
context.linewidth=5;
8 i. E- M h8 l$ ~+ G' I! |context.stroke();
6 S+ Q% M; T7 [}
6 d/ s0 V* r+ \# Y: M</script>
- D7 b% e# Q: a+ {' S</body>
% J& x) b9 c( `, e</html>
) S/ K, K2 `2 ~" \ a8 w' ~% }: ^1.宽:400;高:300;直接写在<canvas>里的效果:0 ^8 A, L/ ~0 l: o$ ?- q ^3 A
名单
( _ {9 ^; K: L1 Z2、删除<canvas>里的宽高,宽:400;高:300;写在<style>里的效果:
D. e' }# ]* J名单1
- D" G4 c1 \) |4 v为什么两者的效果会不一样呢?2 X4 x: B% R E+ f
canvas跟其他标签一样,也可以通过css来定义样式。但这里需要注意的是:canvas的默认宽高为300px * 150px,在css中为canvas定义宽高,实际上把宽高为300px * 150px的画布进行了拉伸,如果在这样的情况下进行canvas绘图,你得到的图形可能就是变形的效果。所以,在canvas绘图时,应该在canvas标签里直接定义宽高。, L6 c- v8 z# ?7 o, `% G9 c, I* ^
, I- _8 s" j, K. p; d4 }更多网页制作信息请查看: 网页制作 |