EMZETT.
Увійти

CSS Grid: побудова макетів із рядків і стовпців

Коротко: CSS Grid розміщує елементи в двовимірній сітці рядків і стовпців; він ідеальний для макетів цілих сторінок, тоді як Flexbox підходить для рядків або стовпців усередині окремих областей.

Докладніше: З display: grid контейнер стає сіткою. Ви задаєте стовпці та рядки; дочірні елементи заповнюють клітинки автоматично або розміщуються навмисно.

Подробиці

Основи

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

fr — частка вільного простору. gap задає проміжки між клітинками. З grid-column: 1 / 3 елемент займає два стовпці; grid-template-areas дає змогу задавати іменовані області («head head», «side content»).

Адаптивність без медіазапиту

grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); створює стільки стовпців, скільки вміщується, завширшки щонайменше 220 px. Один стовпець на телефоні, чотири на десктопі, без жодної точки зламу. minmax(), auto-fill/auto-fit і aspect-ratio — ключові інструменти.

Grid чи Flexbox?

  • Grid: двовимірний, макет ззовні (спершу сітка, вміст заповнює).
  • Flexbox: одновимірний, макет зсередини (розмір визначає вміст), наприклад панелі навігації.
  • Їх можна поєднувати: Grid для каркаса сторінки, Flexbox для рядків усередині клітинок.
  • Subgrid (grid-template-columns: subgrid) дає змогу дочірнім елементам використовувати доріжки батьківської сітки; доступний у сучасних браузерах.

Як уникнути помилок

  • Забагато фіксованих значень у пікселях; віддавайте перевагу fr, minmax, %.
  • Не змінюйте порядок лише візуально: порядок Tab і програм читання з екрана слідує вихідному коду.
  • Використовуйте інструменти сітки в інструментах розробника браузерів, щоб зробити доріжки видимими.

Див. також: Flexbox, Медіазапити та точки зламу, Tailwind CSS