我正在尝试制作一个具有图像背景的画布,该画布填充整个屏幕而不拉伸背景图像。为此,我认为最好的方法是从带有“object-fit”的普通 img 元素开始,使其填充屏幕而不拉伸,然后我可以将 img 元素的相同宽度/高度应用于画布元素并使canvas元素替换img。这也有助于加快页面加载速度,因为我不必在页面加载后等待图像加载,因为图像是在页面加载时加载的。然而,虽然 object-fit 对非 img 元素按预期工作,但似乎对于 img 元素它缩放元素的内容而不是元素本身的含义,当我尝试获取图像的尺寸时,我只是得到整个窗口的尺寸。我在下面的代码中展示了这一点;如果您打开检查元素,您可以看到 img 元素在整个屏幕上延伸。
* {
overflow: hidden;
margin: 0;
padding: 0;
}
div {
width: 100vw;
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
}
img {
width: 100%;
height: 100%;
object-fit: contain;
}
<div>
<img src="https://via.placeholder.com/150">
</div>