如何将flex-container设置为flex-items的宽度?

BOv*_*low 57 css css3 flexbox

我有一个Flex容器justify-content: flex-start.由于柔性物品占用的空间小于容器的尺寸,因此最终会在右侧溢出.

除了在flex容器上设置显式宽度之外,有没有办法只具有相同的width: auto去除溢出?

Mah*_*hks 59

如果您的意思是您希望容器是项目的宽度,而不是扩展到容器宽度的项目...

您可以通过更改display:flexdisplay:inline-flex

  • `inline-flex`在我的情况下没有用,实际上,它应该吗?这不可能吗?就像当你为容器设置`inline-block`和为内部的块项设置`width:100%`时一样,容器不会调整大小到它的`max-width`,而是容器和项目将保持最小可能的宽度.它不会与flexbox类似吗? (3认同)
  • `display:inline-flex` 在我的案例中解决了类似的问题 (3认同)

nea*_*sic 15

  1. width: min-content (CSS3“内在”而不是“外在”)

  2. display: inline-flex 如果你不在乎它是否是内联的

如果width: min-content在段落上使用,最长的单词决定宽度。

.flex-container {
  display: flex;
}

.flex-inline-container {
  display: inline-flex;
}

.width-min-content {
  width: min-content;
}

.row-direction {
  flex-direction: row;
  border: 0.0625rem solid #3cf;
 }
.col-direction {
  flex-direction: column;
  border: 0.0625rem solid magenta;
}
Run Code Online (Sandbox Code Playgroud)
flex
<div class='flex-container row-direction'>
  <input />
  <input type='datetime-local'>
</div>
<div class='flex-container col-direction'>
  <input />
  <input type='datetime-local'>
</div>
<br>
flex width: min-content
<div class='flex-container width-min-content row-direction'>
  <input />
  <input type='datetime-local'>
</div>
<div class='flex-container width-min-content col-direction'>
  <input />
  <input type='datetime-local'>
</div>
<br>
inline-flex
<div class='flex-inline-container row-direction'>
  <input />
  <input type='datetime-local'>
</div>

<div class='flex-inline-container col-direction'>
  <input />
  <input type='datetime-local'>
</div>
Run Code Online (Sandbox Code Playgroud)

  • width: min-content 通过包裹内容来缩小宽度。width:max-content 缩小宽度,直到需要包裹内容,然后停止缩小。 (3认同)

Cor*_* Bo 8

这个在同一个 inline-flex(或 flex)元素上对我有用:

   width: fit-content;
Run Code Online (Sandbox Code Playgroud)

  • 宽度没有这样的属性。 (3认同)
  • @KonradGałęzowski 请参阅此 caniuse 页面:https://caniuse.com/?search=width%3A%20fit-content%3B (2认同)

小智 1

不确定你的问题,但是:

演示: http: //jsfiddle.net/jn45P/

您只需要启用弹性项目的灵活性,用于flex-grow:1;填充空间

<div class="o">
    <div>a</div><div>a</div><div>a</div><div>a</div><div>a</div>
</div>

<div class="o flex">
    <div>a</div><div>a</div><div>a</div><div>a</div><div>a</div>
</div>

div.o
{
    border:2px red solid;
    padding:2px;
    width:500px;
    flex-direction:row;
    display:flex;
    justify-content:flex-start;
}

div.o > div
    {border:2px red solid;margin:2px;}

div.o.flex > div
    {flex:1 1 auto;} /* enable flexibility on the flex-items */
Run Code Online (Sandbox Code Playgroud)

  • 这会调整项目的大小以适合容器,而不是相反。 (7认同)