【问题标题】:when flex-direction is column, divs takes all available width. how to prevent this? [duplicate]当 flex-direction 为 column 时,divs 占据所有可用宽度。如何防止这种情况? [复制]
【发布时间】:2017-11-30 16:19:59
【问题描述】:

见附件sn-p。 对于内容,我需要每个项目占用宽度空间。 弹性项目需要垂直堆叠,如示例中所示。 如何实现?

怎么做?

.container {
  display:flex;
  flex-direction:column;
}
.green {
  background-color:green;
}
.red {
  background-color:red;
}
<div class="container">
  <div class="green"> hello world</div>
  <div class="red"> hello world2</div>
</div>

【问题讨论】:

  • 改成flex-direction: row;
  • 添加 display:inline-table 到子元素。

标签: html css flexbox


【解决方案1】:

假设它们仍应垂直堆叠,请使用 display: inline-flex,它们的大小将与最宽项的内容相同。

对于要折叠成各自内容的每一行,请使用 align-items: flex-start,并注意,这也会在使用 display: flex 时使它们折叠。

为什么它们拉伸到相等的宽度,是因为align-items 默认为stretch,所以通过使用任何其他值,它们将根据内容调整大小

.container {
  display: inline-flex;
  flex-direction:column;
  align-items: flex-start;
}
.green {
  background-color:green;
}
.red {
  background-color:red;
}
<div class="container">
  <div class="green"> hello world</div>
  <div class="red"> hello world2</div>
</div>

【讨论】:

  • 它更好,但仍然不是我需要的。似乎它需要列中最长的弹性项目,并使每个人都这么长。
  • @LiranC 更新
  • @LGSon 绝招
  • 哇,有趣的是 align-items: flex-start 与这个魔法有什么关系。
  • @LiranC 添加了解释为什么会修复它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-16
  • 2023-04-03
  • 2015-08-07
  • 1970-01-01
  • 2018-11-04
  • 2020-04-29
  • 2019-11-18
相关资源
最近更新 更多