css - 如何让 Flexbox 元素根据内容增长但不超过 "flex: 1"

标签 css flexbox

所以我有一个装有两个 child 的容器。第一个 child 是一个列表,第二个 child 是一个按钮。

按钮应该有一个固定的高度,比如 40px。如果我将列表设置为“flex: 1”,它将增长到消耗容器的所有左侧空间减去按钮在底部使用的 40px。

如何让列表根据其内容增长(就像普通的 div 一样),但只会增长到最大消耗所有可用空间(如果内容太大则溢出)

这是 html:

.container {
  display: flex;
  height: 300px;
  width: 100px;
  flex-direction: column;
}
.list {
  display: flex;
  flex: 1;
  overflow-y: scroll;
}
.button {
  display: flex;
  height: 40px;
}
<div class="container">
  <div class="list">
    <ul>
      <li>Hello</li>
      <li>Hello</li>
      <li>Hello</li>
    </ul>
  </div>
  <div class="button">
    View
  </div>
</div>

这是一个例子: https://jsfiddle.net/odrbey4c/

第一个容器中的列表不应占用所有空间。它的行为应该像普通的 div 一样。 第二个容器中的列表很好。

最佳答案

从列表中删除 flex:1...这就是您想要的。

但是,我相信您希望按钮位于容器底部。因此,只需将 margin-top:auto 添加到按钮即可。

哦,将按钮更改为 flex: 0 0 40px 而不是应用高度,这样它就不会收缩。

.container {
  display: inline-flex;
  /* for demo only */
  height: 300px;
  width: 100px;
  flex-direction: column;
  border: 1px solid #ff0000;
}
.list {
  display: flex;
  background: #bbb;
  overflow-y: scroll;
}
.button {
  display: flex;
  flex: 0 0 40px;
  margin-top: auto;
  background: #cccccc;
}
<div class="container">
  <div class="list">
    <ul>
      <li>Hello</li>
      <li>Hello</li>
      <li>Hello</li>
    </ul>
  </div>
  <div class="button">
    View
  </div>
</div>

<div class="container">
  <div class="list">
    <ul>
      <li>Hello</li>
      <li>Hello</li>
      <li>Hello</li>
      <li>Hello</li>
      <li>Hello</li>
      <li>Hello</li>
      <li>Hello</li>
      <li>Hello</li>
      <li>Hello</li>
      <li>Hello</li>
      <li>Hello</li>
      <li>Hello</li>
      <li>Hello</li>
      <li>Hello</li>
      <li>Hello</li>
      <li>Hello</li>
      <li>Hello</li>
      <li>Hello</li>
      <li>Hello</li>
      <li>Hello</li>
      <li>Hello</li>
      <li>Hello</li>
    </ul>
  </div>
  <div class="button">
    View
  </div>
</div>

关于css - 如何让 Flexbox 元素根据内容增长但不超过 "flex: 1",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39660011/

相关文章:

css - IE8 在页脚中显示红色背景

无论选项如何,gulp-autoprefixer 都不输出 -webkit-flex

html - 为什么对象适配在 Flexbox 中不起作用?

html - 为什么宽度为 :100% not taking the parent's width? 的元素

css - 字体 - 生成的字体在 ie 中不起作用?

html - 这段代码有什么问题?HTML/CSS

javascript - 如何使用 jquery 获取数据以 Bootstrap 3 模态形式

javascript - 从 Javascript 附加 HTML 代码

html - 使bootstrap 4在xs屏幕模式下显示flex子div宽度100%

html - 等宽 Flexbox 行,无论列数或列内容如何