这个问题在这里已有答案:
使用flexbox进行以下操作的最佳方法是什么?我希望2行是相等宽度的列,但是,最后一列是100%高度并填充该部分的其余部分。
为此最好使用多行吗?
.row {
display: flex;
flex-wrap: wrap-reverse;
}
.col {display:1;width:30%;background:red;}
.col:nth-of-type(3) {background:blue;}
<div class="row">
<div class="col">
test
</div>
<div class="col">
test
</div>
<div class="col">
test
</div>
<div class="col">
test
</div>
<div class="col">
test
</div>
</div>
这是使用CSS grid layout
的解决方案:
row
将display: grid
定义为网格容器。grid-template-columns: repeat(3, 1fr)
定义3列布局grid-template-rows: repeat(2, 1fr)
定义2列布局grid-row: span 2
将第三列跨越所有行。grid-gap
属性调整行和列之间的间隙。见下面的演示:
.row {
display: grid;
grid-template-columns: repeat(3, 1fr); /* 3 equal columns */
grid-template-rows: repeat(2, 1fr); /* 2 equal rows */
grid-gap: 10px; /* gap between the rows & columns */
}
.col {
background: red;
}
.col:nth-of-type(3) {
background: blue;
grid-row: span 2; /* span all the rows */
}
<div class="row">
<div class="col">test</div>
<div class="col">test</div>
<div class="col">test</div>
<div class="col">test</div>
<div class="col">test</div>
</div>