webroad.online
  1. 1Веб
  2. 2HTML
  3. 3CSS
  4. 4JavaScript
  5. 5TypeScript
  6. 6Git
  7. 7Инструменты
  8. 8React
  9. 9Стейт-менеджмент
  10. 10Next.js
  11. 11Формы
  12. 12Данные и бэкенд
  13. 13SEO
  14. 14Tailwind CSS
  15. 15Анимации
  16. 16Тестирование
  17. 17Архитектура
CSS · Урок 4 из 8

CSS Grid

Двумерная раскладка: fr, repeat, minmax, auto-fit и области.

Обновлено

Что такое CSS Grid

Grid — система двумерной раскладки: на родителе задаются строки и колонки, а дети размещаются по ячейкам. Это самый мощный инструмент раскладки в CSS.

.gallery {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.5rem;
}

Единица fr

fr = доля оставшегося пространства. 1fr 2fr → вторая колонка в два раза шире первой.

Определение Результат
200px 1fr фиксированный сайдбар + контент на всё остальное
repeat(3, 1fr) 3 равные колонки
1fr auto контент + колонка по размеру содержимого
minmax(200px, 1fr) минимум 200px, максимум одна доля

Адаптивная сетка без media queries

.cards {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr));
  gap: 1rem;
}

Помещается столько колонок минимум по 16rem, сколько влезет; остаток делится поровну. На мобильном — одна колонка, на десктопе — 3 или 4, автоматически.

auto-fit или auto-fill: при малом числе элементов auto-fit растягивает их на всю строку, а auto-fill оставляет пустые колонки.

Размещение детей

.featured { grid-column: span 2; }        /* занимает 2 колонки */
.full     { grid-column: 1 / -1; }        /* от первой линии до последней */
.sidebar  { grid-row: 1 / 3; }            /* две строки */

Линии сетки нумеруются с 1; -1 — последняя.

Именованные области

Для раскладки страниц области читаются лучше всего:

.layout {
  display: grid;
  grid-template-columns: 240px 1fr;
  grid-template-areas:
    "header header"
    "sidebar main"
    "footer footer";
}
.layout header { grid-area: header; }
.layout aside  { grid-area: sidebar; }

Выравнивание

Свойство Выравнивает
justify-items / align-items содержимое в каждой ячейке
justify-content / align-content всю сетку в контейнере
place-items: center сокращение — центрирование в ячейках

Виды раскладки на grid — и когда

Раскладка Определение
равные колонки repeat(3, 1fr)
сайдбар + контент 280px 1fr (как эта страница)
адаптивные карточки repeat(auto-fit, minmax(16rem, 1fr))
страница с областями grid-template-areas
holy grail (шапка, 3 колонки, подвал) области + minmax

Коротко

  • Grid = строки + колонки, заданные на родителе.
  • fr делит оставшееся место; minmax + auto-fit = адаптивность без media queries.
  • Flex — для одной оси, grid — для двух.

Официальные источники

Упражнения

Была ли страница полезной?

Один клик — без регистрации.