Как избавиться от пустого пространства между столбцами в гриде?

Как можно убрать пустое пространство в гриде без использования отрицательных отступов (margin)?
Изображение к вопросу
  • 9 января 2024 г. 11:38
Ответы на вопрос 2
Удалить пустое пространство между столбцами в CSS Grid Layout можно несколькими способами, в зависимости от вашей конкретной задачи и структуры сетки. Вот некоторые подходы:

1. Установите ширину столбцов так, чтобы они занимали всё доступное пространство:
Если вы хотите, чтобы столбцы распределяли доступное пространство поровну, вы можете использовать единицу измерения `fr` (fractional unit).

```css
.grid-container {
  display: grid;
  grid-template-columns: repeat(3, 1fr); /* 3 равных столбца займут всё пространство */
}
```

2. Установка интервалов между столбцами (gutters) в ноль:
Возможно, в вашем гриде сейчас установлены интервалы между столбцами. Установите их в ноль, чтобы убрать пустое пространство.

```css
.grid-container {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-gap: 0px; /* или column-gap: 0px; для более новых версий спецификации */
}
```

3. Использование `auto-fill` или `auto-fit`:
Если вы хотите, чтобы столбцы автоматически заполняли доступное пространство и при этом у них не было пустот, можно использовать `auto-fill` или `auto-fit`.

```css
.grid-container {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));
  grid-gap: 0px; /* убедитесь, что интервалы между столбцами равны нулю */
}
```

В этом примере `minmax(100px, 1fr)` задаёт минимальную ширину столбца в 100 пикселей, но позволяет ему растягиваться, чтобы занять доступное пространство.

4. Использование CSS-функции `calc()` для точного вычисления ширины:
Вы также можете использовать функцию `calc()` для расчёта доступного пространства, если вам нужно учесть какие-либо специфические отступы или размеры.

```css
.grid-container {
  display: grid;
  grid-template-columns: calc(33.3% - 10px) calc(33.3% - 10px) calc(33.3% - 10px);
  grid-gap: 0px;
}
```

В этом примере каждый столбец имеет ширину равную трети контейнера минус 10 пикселей. Вы можете адаптировать этот расчёт к своим нуждам.

Выбор подходящего способа зависит от конкретного кейса и дизайнерских требований вашего проекта. Убедитесь, что вы не используете никакие дополнительные отступы или поля (margins/paddings) внутри элементов сетки, которые могли бы добавить дополнительное пространство между столбцами.
ИМХО тут не совсем грид, только masonry приходит на ум, но поддержка там никакая 

ну или как вариант https://www.w3.org/TR/css3-multicol/
Похожие вопросы