Чтобы охватить элементы, вы можете использовать свойства grid-row-start
и grid-row-end
, например -
.item1 {
grid-row-start: 3;
grid-row-end: 6;
background-color:red;
}
.grid-container {
display: grid;
grid-template-columns: 1fr;
grid-row-gap: 5px;
grid-template-rows: repeat(12,20px);
border: 1px solid black;
}
<div class="grid-container">
<div class="item1">1</div>
<div class="item2">2</div>
<div class="item3">3</div>
<div class="item4">4</div>
<div class="item5">5</div>
<div class="item6">6</div>
<div class="item7">7</div>
<div class="item8">8</div>
</div>
Для пропуска строки не используйте grid-row-gap
, а просто добавьте поля как
.grid > div:nth-child(4n + 1), .grid > div:nth-child(4n + 2) {
margin-top: 1em;
}
.grid > div:nth-child(4n + 3), .grid > div:nth-child(4n + 4) {
margin-bottom: 1em;
}
вместо добавления отрицательных полей.Это будет работать так же.(лично я не предпочитаю добавлять отрицательные поля, поскольку это усложняет компоновку, но это ваш выбор)