使flex父扩展和溢出包装

时间:2016-04-25 12:54:18

标签: html css css3 flexbox

如何使用nowrap flex-wrap展开来设置flex父级以适应其内容,即使这意味着溢出包装父级的任何东西?

基本上,内容的最小宽度为我希望flex父级不要缩小所有弹性项所需的空间。

这是一个JSFiddle https://jsfiddle.net/lazamar/odat477r/

.wrapper {
  background-color: yellowgreen;
  display: block;
  padding: 10px;
  max-width: 180px;
}
.parent {
  display: flex;
  flex-flow: row nowrap;
  background-color: yellow;
}
.child {
  display: block;
  background-color: orange;
  margin: 10px;
  min-width: 50px;
}
<div class="wrapper">
  <div class="parent">
    <div class="child">Content</div>
    <div class="child">Content</div>
    <div class="child">Content</div>
    <div class="child">Content</div>
    <div class="child">Content</div>
  </div>
</div>

2 个答案:

答案 0 :(得分:1)

您可以将position:absolute应用于Flex容器,该容器会将其从文档流中删除。

&#13;
&#13;
.wrapper {
  background-color: yellowgreen;
  display: block;
  padding: 10px;
  max-width: 180px;
  position: relative;             /* new; set bounding box for flex container  */
  min-height: 40px;               /* new */
}

.parent {
  display: flex;
  flex-flow: row nowrap;
  background-color: yellow;
  position: absolute;             /* new; remove flex container from document flow */
}

.child {
  /* display: block;              <-- not necessary */
  background-color: orange;
  margin: 10px;
  min-width: 50px;
}
&#13;
<div class="wrapper">
  <div class="parent">
    <div class="child">Content</div>
    <div class="child">Content</div>
    <div class="child">Content</div>
    <div class="child">Content</div>
    <div class="child">Content</div>
  </div>
</div>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

答案是t1m0n所说的。对于父母,请使用 display: inline-flex 代替display: flex

&#13;
&#13;
.wrapper {
  background-color: yellowgreen;
  display: block;
  padding: 10px;
  max-width: 180px;
}
.parent {
  display: inline-flex; /* -- only change --*/
  flex-flow: row nowrap;
  background-color: yellow;
}
.child {
  display: block;
  background-color: orange;
  margin: 10px;
  min-width: 50px;
}
&#13;
<div class="wrapper">
  <div class="parent">
    <div class="child">Content</div>
    <div class="child">Content</div>
    <div class="child">Content</div>
    <div class="child">Content</div>
    <div class="child">Content</div>
  </div>
</div>
&#13;
&#13;
&#13;