我正在try 创建一个空的div,它使用flex: 1flex-grow: 1扩展到它的可用空间,但使用aspect-ratio: 16/9保持长宽比

我试过很多例子,包括最初的padding-top: 56.25%个黑客.但不能让任何东西正常工作.

以下是我目前掌握的情况:

.parent {
  display: flex;
  column-gap: 30px;
  row-gap: 30px;
}

.container {
  display: flex;
  background:pink;
  flex-direction: column;
  height: 300px;
  width: 500px;
  align-items: center;
  justify-content: space-between;
}

#container-2 {
  height: 500px;
  width: 300px;
  background: green;
}

.item {
  position: relative;
  flex: 1;
  background: black;
  aspect-ratio: 16/9;
  opacity: 0.5;
  /* max-width: 100%; */ /* doesn't fix with ratio */
}
<div class="parent">
  <div class="container">
    <p>Example 1</p>
    <div class="item"></div>
    <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Quia incidunt dolorem quam! Tenetur facere, facilis modi ipsa sapiente repellendus dolores doloremque quae. Laborum sapiente voluptatum unde fugit tenetur laudantium animi.</p>
  </div>

  <div class="container" id="container-2">
    <p>Example 2</p>
    <div class="item"></div>
    <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Quia incidunt dolorem quam! Tenetur facere, facilis modi ipsa sapiente repellendus dolores doloremque quae. Laborum sapiente voluptatum unde fugit tenetur laudantium animi.</p>
  </div>
</div>

您将看到示例1可以正常工作,但是示例2 .item会溢出宽度,以try 获得与高度的纵横比.我试了max-width: 100%,它阻止了溢出,但项目不是16:9.

请注意,情况并非如此.

enter image description here

推荐答案

不管它有什么价值,我也没有弄清楚这一点,但最终还是找到了this post个,我主要是为了制作下面的代码片段而偷的.

.parent {
  display: flex;
  column-gap: 30px;
  row-gap: 30px;
}

.container {
  display: flex;
  background:pink;
  flex-direction: column;
  height: 300px;
  width: 500px;
  align-items: center;
  justify-content: center;
  
}

.flexWrapper{
 flex: 1;
 width: 100%;
 position: relative;
}

#container-2 {
  height: 500px;
  width: 300px;
  background: green;
}

.item {
  background-color: black;
  opacity: .5;
  position: absolute;
  margin: auto;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  max-width: 100%;
  max-height: 100%;
  aspect-ratio: 16 / 9;
}
<div class="parent">
  <div class="container">
    <p>Example 1</p>
    <div class="flexWrapper">
      <div class="item"></div>
    </div>
    <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Quia incidunt dolorem quam! Tenetur facere, facilis modi ipsa sapiente repellendus dolores doloremque quae. Laborum sapiente voluptatum unde fugit tenetur laudantium animi.</p>
  </div>

  <div class="container" id="container-2">
    <p>Example 2</p>
    <div class="flexWrapper">
      <div class="item"></div>
    </div>
    
    <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Quia incidunt dolorem quam! Tenetur facere, facilis modi ipsa sapiente repellendus dolores doloremque quae. Laborum sapiente voluptatum unde fugit tenetur laudantium animi.</p>
  </div>

</div>

Css相关问答推荐

如何以Angular 将下拉面板的宽度与其文本框对齐

如何定位此下拉框的下拉面板

InertiaJS - Vue - Laravel:Using CSS Files

寻找组件中最大的元素来设置其他组件的高度

如何更改Swiper Navegation默认 colored颜色

Next.js 条件样式

Img 未拉伸以满足所需的纵横比

有人可以解释为什么我的 CSS 转换如此突然吗?

在 dbc.Container 上方包含横幅 - Dash

在同一旋转中以度数变换旋转

使用 CSS 剪辑/裁剪背景图像

在整个 DIV 周围添加 CSS 框阴影

在 CSS 或 JavaScript 中反转图像的 colored颜色

输入/按钮元素不会在 flex 容器中缩小

iPhone X / 8 / 8 Plus CSS 媒体查询

bootstrap 程序中有 7 个相等的列

跨浏览器方法使子 div 适合其父级的宽度

根据背景 colored颜色 反转 CSS 字体 colored颜色

如何重置或覆盖 IE CSS 过滤器?

仅使用 css 的换行符(如
)