flex-wrap不起作用

The*_*ewy 9 html css css3 flexbox

我已经设置了三个系列的容器和应用display: flex;,并flex-wrap: wrap;给他们,但是当我缩小窗口的大小,他们没有包装?

我已经把代码放在下面,似乎无法解决问题的根源.

body {
  font-family: arial;
}

p {
  color: white;
}

.container {
  background-color: #666;
  width: 800px;
  height: 200px;
  margin: 0 auto;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
}

.item {
  padding: 10px;
  box-sizing: border-box;
}

.item1 {
  flex: 1;
  background-color: red;
}

.item2 {
  flex: 1;
  background-color: blue;
}

.item3 {
  flex: 1;
  background-color: green;
}
Run Code Online (Sandbox Code Playgroud)
<div class="container">

  <div class="item item1">
    <h1>ITEM1</h1>
    <p>flex: 1</p>
  </div>

  <div class="item item2">
    <h1>ITEM2</h1>
    <p>flex: 1</p>
  </div>

  <div class="item item3">
    <h1>ITEM3</h1>
    <p>flex: 1</p>
  </div>

</div>
Run Code Online (Sandbox Code Playgroud)

Chi*_*ler 15

您需要使用max-width而不是width在容器上,您必须允许容器缩小以包装项目.

body {
  font-family: arial;
}

p {
  color: white;
}

.container {
  background-color: #666;
  max-width: 800px;
  height: 200px;
  margin: 0 auto;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
}

.item {
  padding: 10px;
  box-sizing: border-box;
}

.item1 {
  flex: 1;
  background-color: red;
}

.item2 {
  flex: 1;
  background-color: blue;
}

.item3 {
  flex: 1;
  background-color: green;
}
Run Code Online (Sandbox Code Playgroud)
<div class="container">

  <div class="item item1">
    <h1>ITEM1</h1>
    <p>flex: 1</p>
  </div>

  <div class="item item2">
    <h1>ITEM2</h1>
    <p>flex: 1</p>
  </div>

  <div class="item item3">
    <h1>ITEM3</h1>
    <p>flex: 1</p>
  </div>

</div>
Run Code Online (Sandbox Code Playgroud)


Mic*_*l_B 8

这就是物品没有包装的原因:

您有一个Flex容器设置为width: 800px.

容器有三个flex项设置为flex: 1,这是以下的简写:

  • flex-grow: 1
  • flex-shrink: 1
  • flex-basis: 0

这意味着每个项目的实际宽度为0(flex-basis: 0),并且每个项目的大小都基于行(flex-grow: 1)上的可用空间.

因此,实际上,无论可能是什么,您都将每个项目的大小调整为该行空间的三分之一.因此,每个项目都可以收缩width: 0,并且它们永远不会包裹.

如果您添加内容和/或width和/或flex-basis一个或多个项目,并且项目增长超过800px(容器的宽度),那么您的flex项目将换行.

但请注意,它们不会根据您重新调整浏览器窗口的大小进行换行,因为容器不会占用width: 100%视口.它们只会根据容器的宽度进行换行.

body {
  font-family: arial;
}

p {
  color: white;
}

.container {
  background-color: #666;
  width: 800px;
  height: 200px;
  margin: 0 auto;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
}

.item {
  padding: 10px;
  box-sizing: border-box;
}

.item1 {
  flex: 1 0 250px;
  background-color: red;
}

.item2 {
  flex: 1 0 250px;
  background-color: blue;
}

.item3 {
  flex: 1 0 400px;
  background-color: green;
}
Run Code Online (Sandbox Code Playgroud)
<div class="container">

  <div class="item item1">
    <h1>ITEM1</h1>
    <p>flex: 1 0 250px</p>
  </div>

  <div class="item item2">
    <h1>ITEM2</h1>
    <p>flex: 1 0 250px</p>
  </div>

  <div class="item item3">
    <h1>ITEM3</h1>
    <p>flex: 1 0 400px</p>
  </div>

</div>
Run Code Online (Sandbox Code Playgroud)