【发布时间】:2021-03-25 03:18:52
【问题描述】:
我试图用css而不是javascript声明html画布的大小,这不知何故导致用js绘制的大小和对象看起来都很奇怪。这是我的 HTML 代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Computing Animatie</title>
<style>
body {
overflow: hidden;
background-color: black;
background-image: url('./pictures/project_bg.jpg');
background-size: 1375px;
}
canvas {
position: absolute;
top: 0px;
left: 0px;
width: 100%;
height: 100%;
}
</style>
</head>
<body>
<canvas id="can"></canvas>
<script src="animation.js"></script>
</body>
</html>
这是我的 javascript 代码:
const can = document.getElementById('can');
const ctx = can.getContext('2d');
(function test(){
ctx.beginPath();
ctx.fillStyle = 'red';
ctx.fillRect(100, 100, 50, 50);
ctx.closePath();
})();
当我运行它时,矩形会被奇怪地拉伸。 我希望任何人都知道...
【问题讨论】:
-
更改画布CSS属性
position: relative; -
如果您希望动态调整画布大小而不会出现缩放问题,则必须使用 JS 来完成。您可以创建一个
resize事件监听器来检测页面宽度,然后设置<canvas>的width和height属性。然后相应地重新绘制其上的所有对象。 CSS 无法设置这些属性。 -
这是一个相关的问题:stackoverflow.com/questions/1664785/…
标签: javascript html css canvas