Justify-content: 如果使用 flex-wrap: wrap 将子内容包裹到超过 1 行,则居中中断
Justify-content: center breaks if child's content is wrapped onto more than 1 row with flex-wrap: wrap
我的父 div 元素包含多个子元素。父级 div 包含在外部容器 div 中。我希望父 div 在容器内居中,但问题是父使用 flex-wrap: wrap
包裹其所有子 divs.
父项 div 按预期在容器中居中:
#container {
width: 500px;
display: flex;
justify-content: center;
background-color: #c0faff;
}
#parent {
display: flex;
flex-wrap: wrap;
}
.child {
background-color: #5bb4bb;
width: 100px;
height: 100px;
margin: 5px;
}
<div id="container">
<div id="parent">
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
</div>
</div>
但是,一旦有 1 个子项必须包裹到第二行,父项 div 就会向左浮动并忽略容器的 justify-content: center;
css 属性:
#container {
width: 500px;
display: flex;
justify-content: center;
background-color: #c0faff;
}
#parent {
display: flex;
flex-wrap: wrap;
}
.child {
background-color: #5bb4bb;
width: 100px;
height: 100px;
margin: 5px;
}
<div id="container">
<div id="parent">
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
</div>
</div>
如何使前面代码片段的结果看起来像这样?:
只有为容纳 flexbox 项目的容器设置固定宽度才能实现此目的。您可以使它更简单一些,并在此处使用 CSS 中的 calc(...)
函数。如果你知道一行中应该有多少项目,你可以轻松地更改多个断点的数量。如果将一个项目的宽度设置为 css 自定义 属性.
会更容易
#container {
width: 500px;
display: flex;
justify-content: center;
background-color: #c0faff;
}
#parent {
display: flex;
flex-wrap: wrap;
width: calc(4* 110px)
}
.child {
background-color: #5bb4bb;
width: 100px;
height: 100px;
margin: 5px;
}
<div id="container">
<div id="parent">
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
</div>
</div>
我的父 div 元素包含多个子元素。父级 div 包含在外部容器 div 中。我希望父 div 在容器内居中,但问题是父使用 flex-wrap: wrap
包裹其所有子 divs.
父项 div 按预期在容器中居中:
#container {
width: 500px;
display: flex;
justify-content: center;
background-color: #c0faff;
}
#parent {
display: flex;
flex-wrap: wrap;
}
.child {
background-color: #5bb4bb;
width: 100px;
height: 100px;
margin: 5px;
}
<div id="container">
<div id="parent">
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
</div>
</div>
但是,一旦有 1 个子项必须包裹到第二行,父项 div 就会向左浮动并忽略容器的 justify-content: center;
css 属性:
#container {
width: 500px;
display: flex;
justify-content: center;
background-color: #c0faff;
}
#parent {
display: flex;
flex-wrap: wrap;
}
.child {
background-color: #5bb4bb;
width: 100px;
height: 100px;
margin: 5px;
}
<div id="container">
<div id="parent">
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
</div>
</div>
如何使前面代码片段的结果看起来像这样?:
只有为容纳 flexbox 项目的容器设置固定宽度才能实现此目的。您可以使它更简单一些,并在此处使用 CSS 中的 calc(...)
函数。如果你知道一行中应该有多少项目,你可以轻松地更改多个断点的数量。如果将一个项目的宽度设置为 css 自定义 属性.
#container {
width: 500px;
display: flex;
justify-content: center;
background-color: #c0faff;
}
#parent {
display: flex;
flex-wrap: wrap;
width: calc(4* 110px)
}
.child {
background-color: #5bb4bb;
width: 100px;
height: 100px;
margin: 5px;
}
<div id="container">
<div id="parent">
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
</div>
</div>