我有一个css grid with 6 columns
,但我想要的是有2组3,其中每个3占用50%的宽度,但每组是“左对齐”
所以如果我有...
#parent {
width: 100%;
display: grid;
grid-template-rows: 1fr;
grid-template-columns: repeat(3, 1fr) repeat(3, 1fr);
}
.cell {
background-color: yellow;
}
.cell2 {
background-color: lightblue;
}
<div id="parent">
<div class="cell">Label 1</div>
<div class="cell">60</div>
<div class="cell">44</div>
<div class="cell2">Label 2 (xxxx)</div>
<div class="cell2">80</div>
<div class="cell2">11</div>
</div>
也可以看到in this plunkr
这会给予我
但我想...
因此,每个“组”(组1是前3列,组2是最后3列)具有min-content
的单元格,因此它们将在其50%宽度内根据需要增长。
这是一个简单的例子,在我的真实的中,divs
的数量是Angular组件中的一个列表,标记中有一个*ngFor
,所以我事先不知道div的总数(我知道它们总是以3个单元格为一组)
这是否可能与一个单一网格?
[更新1]
在试图使我的例子简单(与我的应用程序相比),我认为我过于简化(我的错误)。
这是一个我想展示的表,所以它可能有很多行,所以这确实意味着下面使用嵌套div的解决方案在有多个不同宽度标签的行时布局不太正确。
所以如果我有(从下面的解决方案之一)
<div id="parent">
<!-- first row -->
<div class="cell cell1">
<div>Label 1</div>
<div>60</div>
<div>44</div>
</div>
<div class="cell cell2">
<div>Label 2 (xxxx)</div>
<div>80</div>
<div>11</div>
</div>
<!-- second row -->
<div class="cell cell1">
<div>Label3 xxx</div>
<div>60</div>
<div>44</div>
</div>
<div class="cell cell1">
<div>Label4 1xxx</div>
<div>60</div>
<div>44</div>
</div>
</div>
#parent {
width: 100%;
display: grid;
grid-template-rows: 1fr;
grid-template-columns: 1fr 1fr;
}
.cell {
display: flex;
gap: 1rem;
}
.cell1{
background-color: yellow;
}
.cell2 {
background-color: lightblue;
}
我们可以看到列不会对齐(如在表中)
4条答案
按热度按时间oxiaedzo1#
网格和flex的混合也是一个很好的解决方案。
kqlmhetl2#
您可以使用具有两列的网格,其中每列包含一个具有3个元素的弹性框。
如果你不需要顶层网格,你可以用2个嵌套的flexbox来达到同样的效果。注意,两个flex项的flex基数为0,使它们的大小相同。
一个二个一个一个
3pmvbmvn3#
brqmpdu14#
我想你需要
minmax()
函数: