Я не думаю, что CSS Grid - лучший вариант для макета, который вы пытаетесь создать, по крайней мере, если он будет динамичным, и вы не знаете, сколько элементов будет в контейнере.время.Flexbox на самом деле лучше для одномерных макетов;может быть немного сложнее сохранить все в одном и том же размере и использовать все доступное пространство именно так, как вам нужно, но, в конце концов, этот тип случаев - то, для чего создан Flexbox.
И, конечно,Вы также можете использовать ширину 100%, используя несколько вычислений для CSS.
Сетка CSS может быть лучше для сохранения выравнивания строк и столбцов, но это другой случай.
.container {
display: flex;
flex-wrap: wrap;
box-sizing: border-box;
}
.flex-item {
width: 30%;
border: 1px solid #000;
flex-grow: 1;
min-height: 120px;
box-sizing: border-box;
margin: 0 5px 10px;
justify-content: space-between;
text-align: center;
}
<div class="container">
<div class="flex-item">1</div>
<div class="flex-item">2</div>
<div class="flex-item">3</div>
<div class="flex-item">4</div>
<div class="flex-item">5</div>
<div class="flex-item">6</div>
<div class="flex-item">7</div>
</div>