← Все вопросы

Как сделать сетку на CSS Grid с одинаковыми колонками?

Задан 11 месяцев назад320 просмотров2 ответа
10

Нужна галерея карточек в виде сетки: например, 3 колонки одинаковой ширины с одинаковыми промежутками. Знаю, что есть CSS Grid, но не пойму, как задать колонки. Как сделать сетку на гриде?

2 ответа

15
✓ Принятый ответ — помог автору

CSS Grid создаётся через display: grid, а колонки задаются свойством grid-template-columns:

.grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr); /* 3 равные колонки */
  gap: 16px;                              /* промежутки */
}
<div class="grid">
  <div class="card">1</div>
  <div class="card">2</div>
  <div class="card">3</div>
  <div class="card">4</div>
</div>

Разберём по частям:

  • 1fr — это «одна доля» свободного места. repeat(3, 1fr) = три колонки по равной доле, то есть одинаковой ширины.
  • gap задаёт расстояние между ячейками сразу по горизонтали и вертикали (не нужны хитрые margin).
  • Элементы сами переносятся на новые строки: 4-я карточка уйдёт под 1-ю.

Чтобы сетка была адаптивной без media queries, замените фиксированное число на авто-подбор:

grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));

Теперь колонок будет ровно столько, сколько влезает: по 200px минимум, растягиваясь до равной доли.

6

Если нужно не равные, а пропорциональные колонки — комбинируйте доли: grid-template-columns: 2fr 1fr даст левую колонку вдвое шире правой. Можно мешать единицы: 250px 1fr — фиксированный сайдбар слева и резиновый контент справа. Очень удобно для типичных макетов «меню + основная область».

Ваш ответ

Войдите, чтобы ответить на вопрос.