html画布保持纵横比,并尽可能大,因为它可以在一个父元素?(CSS)

aij0ehis  于 2023-05-08  发布在  其他
关注(0)|答案(1)|浏览(122)

我尝试将画布缩放到特定的纵横比,以占用父容器中可用的尽可能多的空间。下面是CSS和HTML:

.grid-container {
  display: grid;
  grid-template-rows: min-content 1fr min-content;
  background-color: white;
  gap: 1px;
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
}

.grid-item {
  background-color: blue;
  display: flex;
  justify-content: center;
  align-items: center;
  color: white;
}

#canvas1 {
  aspect-ratio: 4/3;
  object-fit: fit;
  background-color: red;
  margin: 0;
  padding: 0;
  /*
  what to set width and height to??
  */
}
<div class="grid-container">
  <div class="grid-item">
    <h1>header</h1>
  </div>
  <div class="grid-item">
    <canvas id="canvas1"></canvas>
  </div>
  <div class="grid-item">
    <h1>footer</h1>
  </div>
</div>

我尝试使用object-fit让画布占据整个可用空间,同时保持纵横比,但它没有。将widthheight设置为100%似乎会忽略aspect-ratio。我试图在窗口调整大小时保持整个屏幕上,这就是为什么我扩大网格以占据整个空间的原因,但画布并没有像我希望的那样向上或向下缩放。
我试过各种方法,但都没有成功。任何帮助将不胜感激。谢谢!
这是小提琴:https://jsfiddle.net/csells/53bgLw1z/25/

7d7tgy0s

7d7tgy0s1#

设置

width: 100%;
  height: auto;

确实对我有效,而且它也保持了高宽比。

相关问题