【问题标题】:How to stop flex from overflowing the parent [duplicate]如何阻止flex溢出父级[重复]
【发布时间】:2022-01-17 05:57:30
【问题描述】:

Fiddle 考虑以下 HTML/CSS

* {
  box-sizing: border-box;
}

html,
body {
  height: 100%;
  margin: 0;
}

main {
  display: flex;
  flex-direction: column;
  height: 100vh;
  width: 100vw;
  font-size: 5rem;
}

.fill-rest {
  height: 100%;
  display: flex;
  flex-direction: column;
  flex-wrap: wrap;
  align-items: start;
  background-color: green;
}

.fill-rest div {
  background-color: red;
}
<main>
  <div>Some Text!</div>
  <div>Some Text!</div>
  <div class="fill-rest">
    <div>Overflowing</div>
    <div>Overflowing</div>
    <div>Overflowing</div>
    <div>Overflowing</div>
    <div>Overflowing</div>
    <div>Overflowing</div>
  </div>
</main>

为什么 - 如果“溢出”的 div 不存在,元素的高度正是我想要的,但是一旦你添加太多元素,.fill-rest 高度就会变为父元素的 100% “剩余空间”?

我试图找到一种方法使.fill-rest 不会溢出main 并在剩余空间被占用时开始包装。

【问题讨论】:

  • display: inline-flex; ?
  • @Kameron 似乎不起作用。您可以在提供的小提琴中对其进行测试。
  • 不太清楚您想要实现什么。该示例的工作方式与 CSS 中的完全相同,绿色 div 为 100%。

标签: html css flexbox


【解决方案1】:

像这样更改您的 .fill-rest 类:

.fill-rest {
  display: flex;
  flex-wrap: wrap !important;
  background-color: green;
}

Working example(尝试调整窗口大小以查看 div 的环绕)。

【讨论】:

  • 这使得.fill-rest 类永远不会换行,因为它只是抓取它想要的所有高度。我需要main 不会溢出,所以当.fill-rest 已满时,它应该开始在宽度中换行。
  • 我更新了我的答案。你能再试一次吗?
  • 我想保持 flex 行为 flex-direction: column; - 在这种情况下,这并不能解决我的问题。
  • 如果您添加flex-direction: column;,这会将.fill-rest 的每一项都放在新行中。
【解决方案2】:

经过一些其他搜索词,我发现了以下from this question

弹性项目的初始设置是 min-width: auto。这意味着默认情况下,弹性项目不能小于其内容的大小。

添加min-height: 0; 解决了我的问题:

* {
  box-sizing: border-box;
}

html,
body {
  height: 100%;
  margin: 0;
}

main {
  display: flex;
  flex-direction: column;
  height: 100vh;
  width: 100vw;
  font-size: 5rem;
}

.fill-rest {
  height: 100%;
  display: flex;
  flex-direction: column;
  flex-wrap: wrap;
  align-items: start;
  background-color: green;
  min-height: 0;
}

.fill-rest div {
  background-color: red;
}
<main>
  <div>Some Text!</div>
  <div>Some Text!</div>
  <div class="fill-rest">
    <div>Overflowing</div>
    <div>Overflowing</div>
    <div>Overflowing</div>
    <div>Overflowing</div>
    <div>Overflowing</div>
    <div>Overflowing</div>
  </div>
</main>

【讨论】:

  • 我在这篇文章中添加了一个重复的标志 - 抱歉!
猜你喜欢
  • 2020-01-29
  • 2020-07-07
  • 1970-01-01
  • 1970-01-01
  • 2019-10-27
  • 2018-02-14
  • 1970-01-01
  • 2020-07-07
  • 1970-01-01
相关资源
最近更新 更多