【发布时间】:2020-10-05 21:38:20
【问题描述】:
当在 flexbox 中使用画布并绘制相同大小的矩形时,它似乎会出现故障。
看看下面的例子: 它在光标位置绘制一个一个像素的矩形,但绘制的矩形相对于左上角的距离大小不同。
const canvas = document.getElementById("canvas");
const ctx = canvas.getContext("2d");
canvas.addEventListener("click", (event) => {
let x = event.offsetX;
let y = event.offsetY;
ctx.fillRect(x, y, x + 1, y + 1);
});
#container {
display: flex;
}
#first {
flex: 1 1 auto;
background-color: green;
width: 60px;
}
#second {
flex: 2 1 auto;
background-color: red;
}
canvas {
object-fit:none;
object-position:top left;
}
#third {
flex: 1 1 auto;
background-color: green;
width: 60px;
}
<div id="container">
<div id="first"></div>
<div id="second">
<canvas id="canvas" height="160px"></canvas>
</div>
<div id="third"></div>
</div>
如何防止这种情况发生?
【问题讨论】:
-
我没有看到任何奇怪的东西,您正在使用光标位置定义宽度/高度,因此它们的大小不会相同