css - 如何调整容器的大小以适合使用“object-fit:contain”的画布
问题描述
我有一个画布,用于object-fit: contain
在不改变纵横比的情况下使内容尽可能大。但是,我想在画布之上和相对于画布显示其他元素。我计划通过将画布和其他元素放入position: relative
容器并提供其他元素来做到这一点position: absolute
。但是,这会导致画布显示不大于默认宽度/高度(通常小于视口)。我还尝试为容器提供 100% 的宽度和高度,但其他元素不再与画布内容相关。下面是一个例子:
const canvas = document.getElementById("canvas"),
ctx = canvas.getContext("2d");
canvas.width = 100;
canvas.height = 100;
ctx.beginPath();
ctx.rect(0,0,100,100);
ctx.fillStyle = "red";
ctx.fill();
* {
margin: 0;
padding: 0;
overflow: hidden;
}
body {
width: 100vw;
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
}
#container {
position: relative;
width: 100%;
height: 100%;
}
#canvas {
width: 100%;
height: 100%;
object-fit: contain;
}
p {
border: 2px solid black;
position: absolute;
}
<body>
<div id="container">
<p>Example text</p>
<canvas id="canvas"></canvas>
</div>
</body>
解决方案
推荐阅读
- leaflet - 为什么保存的 html 文件中缺少传单地图上的 grobs,但在 Rstudio 浏览器中可以正常打印?
- openshift - 为 Openshift 路由配置多个路径
- amazon-web-services - If else 条件云的形成
- python - Python 中的 {} 未按预期计算
- python - 'try.....except' 的问题会引发 ROOT 文件的语法错误
- excel - 如何忽略或处理 Excel 函数中的空白单元格?
- c# - System.Data.SqlClient.SqlException (0x80131904):执行超时已过期,错误号:-2
- android - 使用 Wireshark 嗅探 SSL 数据包
- excel - 将 CheckBox LinkedCell 分配给变量
- javascript - 在 vuex 中创建常量变量?