基本HTML页面中的画布尺寸始终为300x150。

时间:2018-09-17 17:43:23

标签: html css canvas

我已将问题简化为带有<canvas>元素的基本HTML文档:

<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">

    <style>
      body {
        border: 1px solid #ff5500;
        background-color: black;
      }
      canvas {
        width: 100%;
        height: 100%;
      }
    </style>
</head>

<body>
 <canvas id="canv" style='width:1024px;height:768px'>
  </canvas>
</body>

</html>

但是无论我是否设置样式(例如width),我都会设置heightstyle='width:1024px;height:768px'(使用像素,百分比或视口单位),但是我会调整大小在浏览器窗口中,开发者控制台始终将宽度x高度报告为300x150。为什么会这样,我该如何处理?

这是开发者控制台的输出:

var c = document.getElementById("canv");
undefined
c.style.width
"1024px"
c.style.height
"768px"
c.width
300
c.height
150

Chromium和Firefox中都会发生相同的行为。

我总体上浏览了Stack Overflow和网络,发现了widthclientWidth之间的区别,以及关于Fabric.js的类似问题,但对此具体问题没有答案。< / p>

2 个答案:

答案 0 :(得分:2)

您必须在JS中更改canv.width或.height或直接在HTML中设置属性。无需任何CSS或JS。

示例:

var can = document.querySelector("#testC");
var can2 = document.querySelector("#testC2");

console.log("Canvas before JS: ", can.width, "x", can.height);
console.log("Canvas in HMTL: ", can2.width, "x", can2.height);

can.width = 600;
can.height = 600;

console.log("Canvas after JS: ", can.width, "x", can.height);
console.log("Canvas in HMTL: ", can2.width, "x", can2.height);
<canvas id="testC" width="300" height="300">
<canvas id="testC2" width="600" height="600">

这将记录:

Canvas before JS: 300x300
Canvas in HMTL: 600x600
Canvas after JS: 600x600
Canvas in HMTL: 600x600

答案 1 :(得分:1)

我认为您所指的宽度和高度是 html属性,而不是CSS。

可以这样修改它们;

<canvas width="1024" height="768" style="border:1px solid black;">
</canvas>