【问题标题】:CSS flexbox wrap not resizing to fit contents [duplicate]CSS flexbox wrap没有调整大小以适应内容[重复]
【发布时间】:2017-10-10 00:32:55
【问题描述】:

显示问题的简化 plunkr: https://plnkr.co/edit/mHTHLEumQ04tInFVAz3z?p=preview

如果您调整右视口的大小,直到两个容器不再适合同一行,右视口将移动到新的一行。

但是,父 inline-flex 容器的宽度不会改变,将顶部的“header”元素扔掉 - “header”中的“button”应该与下面容器中的最后一项右对齐。

两个(或更多)项目具有固定宽度,但它们之间没有空间。这些是唯一具有固定宽度或高度的元素。

当项目换行到新行(不使用 js,纯 HTML/CSS)时,如何强制 flex 容器宽度适合/缩小?

.main-flex {
  display: -webkit-inline-flex;
  display: inline-flex;
  -webkit-flex-direction: column;
  flex-direction: column;
}

.flex-container {
  flex-grow: 1;
  display: -webkit-inline-flex;
  display: inline-flex;
  -webkit-flex-direction: row;
  flex-direction: row;
  flex-wrap: wrap;
}
<div style="margin-top: 100px;" class="main-flex">
  <div>
    <span>header</span>
    <span style="float:right">button</span>
  </div>
  <div class="flex-container">
    <div style="height: 400px; width:250px; border: 1px solid black;"></div>
    <div style="height: 400px; width:250px; border: 1px solid black;"></div>
  </div>
</div>

【问题讨论】:

  • 您的要求非常令人困惑。但我的猜测是 html 从一开始就不合逻辑。如果您希望按钮位于最后一个框的右侧,则应将它们放在一起。
  • @MihaiT 如果您查看示例-如果它在同一行上,它仅与最后一个框对齐-如果最后一个框由于换行而移动到新行-“按钮"不应该随它移动。它是所有框的全局标题。

标签: html css flexbox


【解决方案1】:

在 CSS 中,父容器不知道其子容器何时换行。因此,它会继续扩展其大小,而不会注意到内部发生的事情。

换句话说,浏览器在初始级联上呈现容器。当孩子换行时,它不会重排文档。

这就是容器不收缩包装较窄布局的原因。它只是继续,好像没有任何东西被包裹,右边的保留空间证明了这一点。

更多细节在这里:Make container shrink-to-fit child elements as they wrap


但您不需要缩小容器以使您的布局正常工作。它可以通过对您的 HTML 和 CSS 进行一些调整来构建。

.main-flex {
  display: inline-flex;
  flex-wrap: wrap;
}

.flex-container {
  display: flex;
  flex-direction: column;
}

.flex-container>div {
  height: 400px;
  width: 250px;
  border: 1px solid black;
}

.flex-container:nth-child(2)>span {
  align-self: flex-end;
}
<div class="main-flex">
  <div class="flex-container">
    <span>header</span>
    <div></div>
  </div>
  <div class="flex-container">
    <span>button</span>
    <div></div>
  </div>
</div>

revised demo

【讨论】:

  • 不幸的是,它在 wrap 上的行为不符合预期。 “按钮”文本与第二个容器一起移动到新行 - 它应该保持在顶部(在标题中)。
  • 哦,我误解了这部分问题。那么媒体查询可能会对您有所帮助。有关详细信息,请查看链接参考。
  • 不幸的是,媒体查询仅适用于固定宽度,不包括不同的屏幕尺寸。它们还基于窗口大小 - 不包括侧边栏等其他响应式元素。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-02-18
  • 1970-01-01
  • 2011-08-20
  • 1970-01-01
  • 1970-01-01
  • 2020-10-09
  • 2011-02-05
相关资源
最近更新 更多