【问题标题】:First flexbox child not growing into 2nd row第一个 flexbox 孩子没有长到第二行
【发布时间】:2017-08-01 13:26:43
【问题描述】:

我知道 stackoverflow 上有很多 flexbox 问题,而且我经常光顾很多,但似乎没有一个适合我的用例。

有两个问题。

  1. 红色框不会增长到下一个 div,因此紫色框不会与右侧齐平
  2. 蓝框中的内容会根据其内容增长,红框中的寻呼机不会浮动到红框的底部,不会移动标题和列表。

我正在尝试使红色框填充到所附图像中显示的红色箭头的间隙,并使寻呼机也浮动到容器的底部。将鼠标悬停在蓝色框上会使蓝色框的高度变得不方便。

我附上了一个 jsfiddle。下面的图片说明了问题 #1 的预期结果以及箭头的红色框扩展。

https://jsfiddle.net/abthss0h/1/

下面是基本的弹性盒父行。

.row {
    display: flex;
    flex: 0 1 auto;
    justify-content: space-between;
    flex-wrap: wrap;
    flex-direction: row;
    position: relative;
    box-sizing: border-box;
}

【问题讨论】:

  • 这似乎是 grid 的工作,而不是 flexbox。 Flexbox 仅适用于限制为单行或单列的项目。
  • Flexbox 是一维布局方案,即使有换行,所以一个 flex 项不可能跨越多行。但在网格布局中是可能的。

标签: html css flexbox


【解决方案1】:

这完全可以通过嵌套的弹性框和 HTML 中的更改来包装 第二个“列”。

.title {
  max-height: 82px;
}

#red {
  background-color: red;
  border: 1px solid red;
  display: flex;
  flex-direction: column;
}

#green {
  background-color: green;
  border: 1px solid green;
}

#blue {
  background-color: blue;
  flex: 1;
  border: 1px solid blue;
}

#blue:hover {
  height: 300px;
}

#purple {
  background-color: purple;
  border: 1px solid purple;
}

.row {
  display: flex;
  box-sizing: border-box;
}

.right {
  flex: 1;
  display: flex;
  flex-direction: column;
}

.col-4 {
  width: 16.666%;
  float: left;
  box-sizing: border-box;
}

.col-24 {
  width: 100%;
  box-sizing: border-box;
}

.pager {
  margin-top: auto;
}
<div class="row">
  <div id="red" class="col-4">
    <div class="title col-24">
      <h3>Title Here</h3>
    </div>
    <div class="col-24">
      <ul>
        <li>Item 1</li>
        <li>Item 2</li>
        <li>Item 3</li>
        <li>Item 4</li>
        <li>Item 5</li>
        <li>Item 6</li>
      </ul>
    </div>
    <div class="pager">Pager</div>
  </div>
  <div class="right">
    <div id="blue">
      Hover to change height
    </div>
    <div id="purple">
      Placeholder
    </div>
  </div>
</div>


<div class="row">
  <div id="green" class="col-24">
    Placeholder
  </div>
</div>

【讨论】:

  • 关于如何解决问题 #2 的任何想法?这很棒。非常感谢。
  • 已编辑...只需在红色 div 上使用 flex-column 并在寻呼机上使用 margin-top:auto
  • 你摇滚。非常感谢。
猜你喜欢
  • 1970-01-01
  • 2017-06-06
  • 1970-01-01
  • 1970-01-01
  • 2017-03-11
  • 2022-06-28
  • 1970-01-01
  • 1970-01-01
  • 2012-08-16
相关资源
最近更新 更多