我已经设置了一系列三个容器,并将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;
}

<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>
&#13;
答案 0 :(得分:12)
您需要在容器上使用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;
}
<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>
答案 1 :(得分:7)
这就是物品没有包装的原因:
您将Flex容器设置为width: 800px
。
容器有三个设置为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;
}
<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>