flex 元素将一行保持为自动宽度(随内容缩小)是可能的吗? [复制]

Posted

技术标签:

【中文标题】flex 元素将一行保持为自动宽度(随内容缩小)是可能的吗? [复制]【英文标题】:flex element keeping a row as auto width ( shrink with content ) is possible? [duplicate] 【发布时间】:2021-02-23 04:28:10 【问题描述】:

.container
  border:1px solid red;
  display:inline-flex;
  flex-wrap: wrap;
  flex-direction: column;
  min-width: 300px;


.first
  flex-basis: 100%;
  background-color: green;
  color:white;


.second
  background-color: gray;
  color: yellow;
  flex-basis: auto;
 <div class="container">
  <div class="first">full width</div>
  <div class="second">
  inline-block
  </div>

我不想让“第二个”div 占用 100%。我想保持它像“inline-block”一样宽度应该扩展到内容可用。可以用flex做吗?

提前致谢

【问题讨论】:

宽度:适合内容;为.秒 【参考方案1】:

使用align-self 限制flexbox 中的flex-items。

.container
  border:1px solid red;
  display:inline-flex;
  flex-wrap: wrap;
  flex-direction: column;
  min-width: 300px;


.first
  flex-basis: 100%;
  background-color: green;
  color:white;


.second
  background-color: gray;
  color: yellow;
  align-self: start;
<div class="container">
  <div class="first">full width</div>
  <div class="second">
    inline-block
  </div>
</div>

【讨论】:

如果你也想缩小边框,在这种情况下从父级移除边框并添加.container * border:1px solid red; 【参考方案2】:

margin-right: auto 添加到.second 类。

.container
  border:1px solid red;
  display:inline-flex;
  flex-wrap: wrap;
  flex-direction: column;
  min-width: 300px;


.first
  flex-basis: 100%;
  background-color: green;
  color:white;


.second
  background-color: gray;
  color: yellow;
  flex-basis: auto;
  margin-right: auto;
<div class="container">
  <div class="first">full width</div>
  <div class="second">
  inline-block
  </div>

【讨论】:

以上是关于flex 元素将一行保持为自动宽度(随内容缩小)是可能的吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

flex布局之flex-shrink

flex布局

flex为1的时候,子元素限制一行时内容撑出父布局解决方案

flex为1的时候,子元素限制一行时内容撑出父布局解决方案

flex为1的时候,子元素限制一行时内容撑出父布局解决方案

修复了滚动列表顶部的标题。所有列高度相同的 Flex 布局