Как положить по два grid-элемента в каждую ячейку без использования уникальных классов/селекторов?

Существует несколько способов положить по два grid-элемента в каждую ячейку без использования уникальных классов или селекторов. Один из таких подходов основан на использовании псевдокласса ":nth-child".

Для начала, необходимо создать сетку с ячейками, где каждая ячейка представляет собой контейнер для двух grid-элементов. Например, мы можем создать следующую сетку:

<div class="grid-container">
  <div class="grid-cell"></div>
  <div class="grid-cell"></div>
  <div class="grid-cell"></div>
  <div class="grid-cell"></div>
  <!-- ... и т.д. -->
</div>

Затем, в CSS мы можем использовать псевдокласс ":nth-child" для выбора каждой второй ячейки и определения правил для ее дочерних элементов. Например:

.grid-container {
  display: grid;
  grid-template-columns: repeat(2, 1fr); /* создаем две колонки */
  grid-auto-rows: auto; /* автоматическая высота строк */
}

.grid-cell:nth-child(even) {
  display: grid;
  grid-template-columns: 1fr; /* одна колонка во второй ячейке */
  grid-template-rows: repeat(2, 1fr); /* две строки */
}

.grid-cell:nth-child(even) > * {
  grid-column: 1; /* элементы занимают только одну колонку */
}

В этом примере используется псевдокласс ":nth-child(even)", чтобы выбрать каждую вторую ячейку. Затем мы определяем правила для дочерних элементов такой ячейки: создаем одну колонку, две строки и каждый элемент занимает только одну колонку.

Таким образом, мы можем положить по два grid-элемента в каждую ячейку сетки, не используя уникальные классы или селекторы. Этот подход является гибким и может быть легко адаптирован к различным размерам и компоновкам сетки.