gpt4 book ai didi

css - 如何在多行中获得 33.33% 宽度的 flex div?

转载 作者:行者123 更新时间:2023-12-04 15:53:48 24 4
gpt4 key购买 nike

我正在尝试将 flex div 堆叠成 3 行。有时我会有 3 个 div,有时是 6 或 21 等。我弄清楚了宽度和填充,但我不知道如何让它们开始每组 3 后的新行。

我怎样才能做到这一点?现在它将它们全部放在 1 行中。

HTML代码是这样的:

<div id="container">

<div class="sections__container">

<div class="sections__container__a">A-1</div>
<div class="sections__container__b">A-2</div>
<div class="sections__container__c">A-3</div>

<div class="sections__container__a">B-1</div>
<div class="sections__container__b">B-2</div>
<div class="sections__container__c">B-3</div>

</div>

</div>

每个 flex div 都使用 CSS,如:
width: 33.33%;
height: 100%;
float: left;
flex-grow: 1;

这是一个 jsFiddle 让事情变得更容易:
https://jsfiddle.net/xr746syj/

非常感谢您的任何建议:)

最佳答案

首先,您需要使用 flex-wrap: wrap以便您的行在适当的点中断。

其次,您正在使用 margin 并需要在您的 width 中考虑它们。计算。

所以,如果你说一个区块是 33.33%但有 margin-left: 5px ,您需要使用 width: calc(33.33% - 5px) .

最后,我删除了 float s 来自您的代码,因为它们在应用于 flex 子项时是无用的属性。通过创建一个通用的 class 可以大大简化您的代码。包含每个部分之间的所有共享值。

这是完整的工作代码:

* {
box-sizing: border-box;
}

#container {
width: 600px;
margin: 0 auto;
background-color: #ececec;
padding: 10px;
margin-bottom: 30px;
}

.sections__container {
margin: 0 auto;
max-width: 600px;
display: flex;
flex-wrap: wrap;
}

.sections__container__a {
margin-right: 5px;
width: calc(33.33% - 5px);
height: 100%;
border-radius: 4px;
flex-grow: 1;
background-color: #FFFFFF;
font-size: 0.80rem;
padding: 15px 0px 10px 0px;
font-weight: 600;
margin-bottom: 10px;
text-align: center;
}

.sections__container__b {
margin: 0 5px;
width: calc(33.33% - 10px);
height: 100%;
border-radius: 4px;
flex-grow: 1;
background-color: #FFFFFF;
font-size: 0.80rem;
padding: 15px 0px 10px 0px;
font-weight: 600;
margin-bottom: 10px;
text-align: center;
}

.sections__container__c {
margin-left: 5px;
width: calc(33.33% - 5px);
height: 100%;
border-radius: 4px;
flex-grow: 1;
background-color: #FFFFFF;
font-size: 0.80rem;
padding: 15px 0px 10px 0px;
font-weight: 600;
margin-bottom: 10px;
text-align: center;
}
<div id="container">
<div class="sections__container">
<div class="sections__container__a">A-1</div>
<div class="sections__container__b">A-2</div>
<div class="sections__container__c">A-3</div>

<div class="sections__container__a">B-1</div>
<div class="sections__container__b">B-2</div>
<div class="sections__container__c">B-3</div>
</div>
</div>


jsFiddle

关于css - 如何在多行中获得 33.33% 宽度的 flex div?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55003169/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com