【问题标题】:Vertically stack items in a row if height is available如果高度可用,则将项目垂直堆叠成一行
【发布时间】:2020-08-09 10:25:03
【问题描述】:

我有一个 flex 行,里面有一些项目。

这些项目的高度可以缩放,但有些项目会保持很小。

我想知道是否可以在弹性框中堆叠某些项目。

这是我制作的一个简单示例:

.row {
  background: #ccc;
  display: flex;
  justify-content: space-around;
  align-items: flex-start;
}

span {
  display: inline-block;
  font-weight: bold;
  padding: 0.5em 1em;
}
<div class="row">
  <div class="item">
    <span>1</span>
  </div>
  <div class="item">
    <span>2</span>
  </div>
  <div class="item">
    <span>3</span>
    <ul>
      <li>3.a</li>
      <li>3.b</li>
      <li>3.c</li>
    </ul>
  </div>
  <div class="item">
    <span>4</span>
    <ul>
      <li>4.a</li>
      <li>4.b</li>
      <li>4.c</li>
    </ul>
  </div>
</div>

codepen

在这个例子中,#1 和#2 不占用太多垂直空间,所以我希望它们相互堆叠。

如果不将整行重组为两个单独的列,这是否可能?


编辑:

这不是这篇文章的重复:How to disable equal height columns in Flexbox?

建议的帖子使用align-items: flex-start 提及。

这有助于但不能回答我的问题。

【问题讨论】:

    标签: html css flexbox


    【解决方案1】:

    我可以在 flexbox 中看到这种情况发生的唯一方法是使用 flex-flow: column wrap 和容器上的固定高度。

    .row {
      background: #ccc;
      display: flex;
      flex-flow: column wrap;
      max-height: 150px;
    }
    
    span {
      display: inline-block;
      font-weight: bold;
      padding: 0.5em 1em;
    }
    <div class="row">
      <div class="item">
        <span>1</span>
      </div>
      <div class="item">
        <span>2</span>
      </div>
      <div class="item">
        <span>3</span>
        <ul>
          <li>3.a</li>
          <li>3.b</li>
          <li>3.c</li>
        </ul>
      </div>
      <div class="item">
        <span>4</span>
        <ul>
          <li>4.a</li>
          <li>4.b</li>
          <li>4.c</li>
        </ul>
      </div>
    </div>

    【讨论】:

    • 这几乎正是我正在寻找的,尽管最大高度有点杀死它,因为这些列表的高度可能会有所不同。
    猜你喜欢
    • 1970-01-01
    • 2016-06-28
    • 1970-01-01
    • 1970-01-01
    • 2022-01-26
    • 2023-01-10
    • 1970-01-01
    • 2015-05-18
    • 2014-03-06
    相关资源
    最近更新 更多