canvas需要在标签里直接定义宽高_html5教程技巧
2014-12-28 00:35:18
[小 大]
已经帮助:人解决问题
这篇文章主要介绍了为什么canvas需要在标签里直接定义宽高,对此专门做了下测试,非常实用,推荐给小伙伴们
以前用canvas画图时,都是直接在canvas标签里直接写上宽高,没有问题,但也没有探究过为什么宽高要直接写在canvas标签里,因为各个资料的例子上都是这么写的。今天王sir提出了一个问题:如果把宽高写在<style>里,看看会有什么不同。自己试了以下,果然有问题。AeUHTML5中文学习网 - HTML5先行者学习网
先看一下代码:AeUHTML5中文学习网 - HTML5先行者学习网
AeUHTML5中文学习网 - HTML5先行者学习网
<!DOCTYPE html>AeUHTML5中文学习网 - HTML5先行者学习网
<html>AeUHTML5中文学习网 - HTML5先行者学习网
<head>AeUHTML5中文学习网 - HTML5先行者学习网
<meta charset="utf-8">AeUHTML5中文学习网 - HTML5先行者学习网
<title>canvas</title>AeUHTML5中文学习网 - HTML5先行者学习网
<meta name="Keywords" content="">AeUHTML5中文学习网 - HTML5先行者学习网
<meta name="author" content="@my_programmer">AeUHTML5中文学习网 - HTML5先行者学习网
<style type="text/css">AeUHTML5中文学习网 - HTML5先行者学习网
body{margin:0;}AeUHTML5中文学习网 - HTML5先行者学习网
canvas{margin:20px; AeUHTML5中文学习网 - HTML5先行者学习网
/*width: 400px;AeUHTML5中文学习网 - HTML5先行者学习网
height: 300px;*/AeUHTML5中文学习网 - HTML5先行者学习网
} AeUHTML5中文学习网 - HTML5先行者学习网
</style>AeUHTML5中文学习网 - HTML5先行者学习网
</head>AeUHTML5中文学习网 - HTML5先行者学习网
<body onload="draw()">AeUHTML5中文学习网 - HTML5先行者学习网
<canvas id="canvas" width=400 height=300 style="border:1px solid #f00;"></canvas>AeUHTML5中文学习网 - HTML5先行者学习网
<script>AeUHTML5中文学习网 - HTML5先行者学习网
function draw() {AeUHTML5中文学习网 - HTML5先行者学习网
var canvas=document.getElementById('canvas');AeUHTML5中文学习网 - HTML5先行者学习网
var context=canvas.getContext('2d');AeUHTML5中文学习网 - HTML5先行者学习网
context.beginPath();AeUHTML5中文学习网 - HTML5先行者学习网
context.moveTo(20,20);AeUHTML5中文学习网 - HTML5先行者学习网
context.lineTo(200,100);AeUHTML5中文学习网 - HTML5先行者学习网
context.lineWidth=5;AeUHTML5中文学习网 - HTML5先行者学习网
context.stroke();AeUHTML5中文学习网 - HTML5先行者学习网
}AeUHTML5中文学习网 - HTML5先行者学习网
</script>AeUHTML5中文学习网 - HTML5先行者学习网
</body>AeUHTML5中文学习网 - HTML5先行者学习网
</html>AeUHTML5中文学习网 - HTML5先行者学习网
1.宽:400;高:300;直接写在<canvas>里的效果:AeUHTML5中文学习网 - HTML5先行者学习网
AeUHTML5中文学习网 - HTML5先行者学习网
AeUHTML5中文学习网 - HTML5先行者学习网
2、删除<canvas>里的宽高,宽:400;高:300;写在<style>里的效果:AeUHTML5中文学习网 - HTML5先行者学习网
AeUHTML5中文学习网 - HTML5先行者学习网
为什么两者的效果会不一样呢?AeUHTML5中文学习网 - HTML5先行者学习网
canvas跟其他标签一样,也可以通过css来定义样式。但这里需要注意的是:canvas的默认宽高为300px * 150px,在css中为canvas定义宽高,实际上把宽高为300px * 150px的画布进行了拉伸,如果在这样的情况下进行canvas绘图,你得到的图形可能就是变形的效果。所以,在canvas绘图时,应该在canvas标签里直接定义宽高。AeUHTML5中文学习网 - HTML5先行者学习网