Хотя вы можете справиться с этим с помощью nth-child, использование классов является более понятным способом.
Вам требуется минимум 100 * * двенадцать столбцов, поскольку у вас есть элементы, которые охватывают 1/3 , 1/2 и все столбцы.
Вы не можете разбить сетку из 8 столбцов на трети.
Итак, просто примените классы, чтобы указать, сколько столбцов в каждом div должен охватывать следующим образом:
.container {
display: grid;
grid-template-columns: repeat(12, 1fr);
text-align: center;
gap: .25em;
margin: 1em;
}
.item {
border: 1px solid grey;
}
.span-12 {
grid-column: span 12;
}
.span-6 {
grid-column: span 6;
}
.span-4 {
grid-column: span 4;
}
<div class="container">
<div class="item span-12">Item 1</div>
<div class="item span-4">Item 2</div>
<div class="item span-4">Item 3</div>
<div class="item span-4">Item 4</div>
<div class="item span-4">Item 5</div>
<div class="item span-4">Item 6</div>
<div class="item span-4">Item 7</div>
<div class="item span-6">Item 8</div>
<div class="item span-6">Item 9</div>
<div class="item span-12">Item 10</div>
</div>