我有2个画布,一个使用HTML属性宽度和高度来调整它的大小,另一个使用CSS:
<canvas id="compteur1" width="300" height="300" onmousedown="compteurClick(this.id);"></canvas>
<canvas id="compteur2" style="width: 300px; height: 300px;" onmousedown="compteurClick(this.id);"></canvas>
Compteur1正常显示,但compteur2不正常。内容使用JavaScript在300x300的画布上绘制。
为什么会有显示差异?
对于<canvas>元素,宽度和高度的CSS规则设置将绘制到页面的canvas元素的实际大小。另一方面,宽度和高度的HTML属性设置了画布API将使用的坐标系统或“网格”的大小。
例如,考虑这个(jsfiddle):
var ctx = document.getElementById('canvas1').getContext('2d');
ctx。fillStyle = "red";
ctx。fillRect(10,10,30,30);
var ctx2 = document.getElementById('canvas2').getContext('2d');
ctx2。fillStyle = "red";
ctx2。fillRect(10,10,30,30);
帆布{
边框:1px纯黑色;
}
< span style=" font - family:宋体;" Height ="50" width="100"></canvas> .
< span style=" font - family:宋体;" Height ="50" width="100"></canvas> .
相对于canvas元素的内部坐标,两者都有相同的东西被画在上面。但在第二个画布中,红色矩形的宽度将是原来的两倍,因为根据CSS规则,整个画布将被拉伸到更大的区域。
注意:如果CSS的宽度和/或高度规则没有指定,那么浏览器将使用HTML属性来调整元素的大小,使这些值的1个单位等于页面上的1px。如果没有指定这些属性,则默认宽度为300,高度为150。