为何通过设置canvas的style来控制其长宽,画出的图会变成2倍?

varlj varlj 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
新学HTML5,在画图时发现一个问题,以fillRect为例

当我以其属性height和width控制长宽时,一切正常

<canvas id="cav" style="border:solid 1px #000;" width="600" height="400"></canvas>


如果使用CSS控制长宽时,则我设置的值都变成了2倍,仿佛我设置了scale(2,2)一样

<canvas id="cav" style="border:solid 1px #000;width:600px;height:400px;"></canvas>


请问这是怎么回事呢,有相关说明吗?

以下为测试代码,在firefox和chrome上看到的都一样


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>test</title>
</head>
<body>
<canvas id="cav1" style="border:solid 1px #000;" width="600" height="300"></canvas>
<br/><br/>
<canvas id="cav2" style="border:solid 1px #000;width:600px;height:300px;"></canvas>

<script type="text/javascript">
//正常
var can = document.getElementById("cav1");
var ctx=can.getContext('2d');
ctx.fillRect(10,10,200,100);
ctx.stroke();

//2倍
can = document.getElementById("cav2");
ctx=can.getContext('2d');
ctx.fillRect(10,10,200,100);
ctx.stroke();
</script>
</body>
</html>
...全文

相关推荐

评论 8
收藏 已收藏
分享
返回顶部
varlj
JavaScript 87,984 成员 224,681 内容