Коли використовувати Flexbox, а коли CSS Grid: порівняння двох методів

Курси Front-end developer

CSS Flexbox (флекс) – це одновимірна модель верстки, яка розташовує елементи в один ряд або в одну колонку. CSS Grid – двовимірна модель, яка керує рядками і колонками одночасно. У 2026 році обидві технології підтримують усі сучасні браузери, включно з властивістю gap для Flexbox і subgrid для Grid, тому вибір між ними залежить від задачі, а не від сумісності.

Розбираємо детально, що таке flexbox і що таке grid, у чому різниця flex vs grid, як відцентрувати елемент по вертикалі й горизонталі, як вирівняти блок праворуч і як поєднувати css flex and grid в одному макеті. Також – CSS Flexbox шпаргалка з усіма основними властивостями, ігри на кшталт Flexbox Froggy, playground-інструменти для практики і FAQ.

Хочеш верстати і отримувати за це гроші?

На курсі Frontend developer ти освоїш Grid, Flexbox і все інше – з ментором, практикою і підтримкою до першого офера.

Що таке Flexbox (флекс) простими словами?

Flexbox, або флекс, – це модуль CSS для розташування елементів уздовж однієї осі: горизонтально в рядок або вертикально в колонку. Флекс сам розподіляє вільне місце між елементами і вирівнює їх, а з flex-wrap: wrap – переносить на новий рядок, коли місця не вистачає.

Щоб увімкнути Flexbox, достатньо задати батьківському елементу display: flex. Після цього всі його прямі нащадки стають flex-елементами, і ними можна керувати через властивості контейнера.

Основні поняття CSS Flexbox:

  1. Flex-контейнер (flex container) – елемент із display: flex, який керує розташуванням дочірніх елементів.
  2. Flex-елементи (flex items) – прямі нащадки контейнера.
  3. Головна вісь (main axis) – напрямок, у якому стоять елементи. За замовчуванням горизонтальний, змінюється через flex-direction.
  4. Поперечна вісь (cross axis) – вісь, перпендикулярна головній.
  5. Проміжок (gap) – відстань між елементами без використання margin.

Флекс це не "сітка" в повному розумінні: він не знає, що відбувається в сусідньому рядку. Кожен рядок flex-контейнера розраховується окремо, і саме тому Flexbox ідеальний для компонентів – меню, кнопок, карток в один ряд.

Приклад CSS Flexbox: навігаційна панель

<nav class="nav">
  <a href="#">Головна</a>
  <a href="#">Курси</a>
  <a href="#">Блог</a>
</nav>
.nav {
  display: flex;
  justify-content: space-between; /* розносить пункти по горизонталі до країв */
  align-items: center;            /* центрує пункти по вертикалі */
  gap: 16px;                      /* мінімальний проміжок між пунктами */
}

У цьому прикладі justify-content: space-between розподіляє пункти меню вздовж головної осі: перший притискається до лівого краю, останній – до правого. align-items: center вирівнює їх по центру поперечної осі, тобто по вертикалі.

CSS Flexbox шпаргалка: основні властивості

CSS Flexbox має 7 ключових властивостей контейнера і 6 властивостей елементів – їх достатньо для більшості задач верстки. Нижче – CSS Flexbox cheat sheet і короткий css flexbox guide по властивостях, який зручно тримати під рукою.

Властивість контейнераЩо робитьОсновні значення
displayВмикає Flexboxflex, inline-flex
flex-directionЗадає напрямок головної осіrow, row-reverse, column, column-reverse
flex-wrapДозволяє перенос елементів на новий рядокnowrap, wrap, wrap-reverse
justify-contentВирівнює елементи вздовж головної осіflex-start, center, flex-end, space-between, space-around, space-evenly
align-itemsВирівнює елементи вздовж поперечної осіstretch, flex-start, center, flex-end, baseline
align-contentВирівнює рядки, коли їх кілька (з flex-wrap: wrap)flex-start, center, space-between, stretch
gapПроміжок між елементами16px, 1rem 2rem (рядки / колонки)
CSS Flexbox шпаргалка: властивості flex-контейнера, 2026
Властивість елементаЩо робитьПриклад
flex-growЯку частку вільного місця забирає елементflex-grow: 1
flex-shrinkНаскільки елемент стискається, коли місця бракуєflex-shrink: 0 – не стискати
flex-basisПочатковий розмір елемента до розподілу місцяflex-basis: 200px
flexСкорочення для grow, shrink і basisflex: 1 = 1 1 0%
align-selfОкреме вирівнювання одного елемента по поперечній осіalign-self: flex-end
orderЗмінює візуальний порядок елементаorder: -1 – поставити першим
CSS Flexbox шпаргалка: властивості flex-елементів, 2026

Значення за замовчуванням для flex-елемента – flex: 0 1 auto: елемент не розтягується, але може стискатися, а його початковий розмір визначають width/height або вміст.

Як відцентрувати елемент по вертикалі й горизонталі у Flexbox?

Щоб відцентрувати елемент по вертикалі й горизонталі, задайте контейнеру три властивості: display: flex, justify-content: center і align-items: center. Це один із найкоротших способів центрування в CSS.

.wrapper {
  display: flex;
  justify-content: center; /* по горизонталі */
  align-items: center;     /* по вертикалі */
  min-height: 100vh;       /* контейнеру потрібна висота, інакше вертикального центрування не буде видно */
}

У CSS Grid той самий результат дає ще коротший запис: display: grid; place-items: center;. Обидва варіанти коректні, але для одного блоку всередині контейнера частіше обирають Flexbox.

Як вирівняти елемент праворуч (CSS Flexbox align right)?

Є два способи, і вони розв'язують різні задачі:

  1. Усі елементи праворуч – justify-content: flex-end на контейнері.
  2. Один елемент праворуч, решта ліворуч – margin-left: auto на цьому елементі. Наприклад, кнопка "Увійти" в шапці сайту, яку треба відсунути від меню.
.header { display: flex; align-items: center; gap: 24px; }
.header .login { margin-left: auto; } /* забирає весь вільний простір зліва */

CSS Flexbox gap: відступи без margin

Властивість gap у Flexbox задає проміжок між елементами і підтримується в усіх сучасних браузерах: Chrome з версії 84, Firefox з 63, Safari з 14.1. Раніше відступи у флексі робили через margin і від'ємні відступи контейнера – тепер це зайве.

gap додає простір лише між елементами, а не по краях контейнера. Можна задати окремо для рядків і колонок: gap: 12px 24px або row-gap і column-gap.

Дізнайся, як стати Front-end розробником!

Самостійно розібратися у верстці в CSS дійсно складно. Отримай знання та досвід від професіоналів!

Що таке CSS Grid простими словами?

CSS Grid – це двовимірна система верстки, яка ділить контейнер на рядки й колонки і розміщує елементи в комірках цієї сітки. На відміну від флексу, grid це модель "від контейнера": розмір колонок і рядків задається заздалегідь, а елементи заповнюють готову структуру.

Основні поняття CSS Grid:

  1. Grid-контейнер – елемент із display: grid.
  2. Колонки й рядки (tracks) – задаються через grid-template-columns і grid-template-rows.
  3. Лінії сітки (grid lines) – межі між колонками й рядками, до яких можна "прив'язати" елемент.
  4. Області (grid areas) – іменовані ділянки сітки, наприклад header чи sidebar.
  5. Одиниця fr – частка вільного простору. 1fr 2fr означає, що друга колонка отримує вдвічі більше вільного простору, ніж перша.
  6. Проміжок (gap) – відстань між комірками.

Приклад CSS Grid: сітка карток 3 × 2

<div class="grid">
  <div>1</div><div>2</div><div>3</div>
  <div>4</div><div>5</div><div>6</div>
</div>
.grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr); /* три колонки однакової ширини */
  gap: 16px;
}

Шість елементів автоматично розкладаються у 3 колонки і 2 рядки. Щоб сітка стала адаптивною без медіазапитів, достатньо замінити repeat(3, 1fr) на repeat(auto-fill, minmax(200px, 1fr)): браузер сам визначить, скільки колонок шириною від 200px поміщається в рядок.

Subgrid – нова можливість Grid, яку з вересня 2023 року підтримують усі основні браузери (Chrome і Edge 117+, Firefox 71+, Safari 16+). Вона дозволяє вкладеній сітці успадковувати колонки батьківської – наприклад, щоб заголовки і кнопки в картках різної висоти стояли на одній лінії.

Flex vs Grid: у чому різниця між Flexbox і Grid у 2026?

Головна різниця: Flexbox працює в одному вимірі і будує макет від вмісту, а Grid працює у двох вимірах і будує макет від контейнера. У флексі розмір елемента залежить від його контенту і flex-grow, у Grid – від колонок, які задав контейнер.

КритерійCSS FlexboxCSS Grid
ВимірністьОдновимірний: рядок або колонкаДвовимірний: рядки і колонки одночасно
Хто задає розмірВміст і властивості елементів (flex-grow, flex-basis)Контейнер (grid-template-columns, grid-template-rows)
Перенесення рядківКожен рядок рахується окремо, елементи можуть мати різну ширинуЕлементи зберігають ширину колонок у всіх рядках
Типові задачіНавігація, кнопки, форми, вирівнювання і центруванняКаркас сторінки, галереї, дашборди, сітки карток
Ключові властивостіjustify-content, align-items, flexgrid-template-columns, grid-area, fr, minmax()
Вкладені сіткиНемає власного механізмуsubgrid
Підтримка браузерами у 2026Усі сучасні браузери, gap – з 2021 рокуУсі сучасні браузери, subgrid – з 2023 року
Порівняння CSS Flexbox і CSS Grid, 2026

Простий тест для вибору: якщо достатньо сказати "постав ці елементи в ряд", це Flexbox. Якщо потрібно сказати "ця картка займає дві колонки, а ця – два рядки", це Grid.

Коли використовувати Flexbox, а коли Grid?

Flexbox – кращий вибір, коли:

  1. Елементи стоять в один ряд або колонку – меню, панель інструментів, група кнопок, теги.
  2. Потрібно відцентрувати або вирівняти блок – по вертикалі, горизонталі, праворуч.
  3. Кількість і розмір елементів заздалегідь невідомі – наприклад, список тегів різної довжини, що переноситься на новий рядок.
  4. Форма з полями різної ширини – поле email удвічі ширше за поле імені через flex: 2 для email і flex: 1 для імені.

CSS Grid – кращий вибір, коли:

  1. Потрібен каркас сторінки – шапка, контент, бічна панель, футер.
  2. Елементи мають вирівнюватися і по рядках, і по колонках – галерея, каталог товарів, сітка карток.
  3. Блок займає кілька колонок чи рядків – журнальна верстка, дашборд із віджетами різного розміру.
  4. Потрібна адаптивність без медіазапитів – repeat(auto-fill, minmax()).

Як поєднувати Grid і Flexbox в одному макеті?

У реальних проєктах CSS Grid і Flexbox використовують разом: Grid задає загальну структуру сторінки, а Flexbox вирівнює елементи всередині кожного блоку. Комбінація css flex grid (її ще шукають як flexbox grid) – стандарт сучасної frontend-розробки, а не компроміс.

<div class="page">
  <header>Логотип і меню</header>
  <main>Контент</main>
  <aside>Бічна панель</aside>
  <footer>Футер</footer>
</div>
.page {
  display: grid;
  grid-template-areas:
    "header header"
    "main   aside"
    "footer footer";
  grid-template-columns: 3fr 1fr;
  gap: 16px;
}

.page > header {
  grid-area: header;
  display: flex;                  /* усередині шапки – флекс */
  justify-content: space-between;
  align-items: center;
}

.page > main   { grid-area: main; }
.page > aside  { grid-area: aside; }
.page > footer { grid-area: footer; }

Тут Grid розкладає сторінку на чотири області, а шапка всередині Grid-області сама є flex-контейнером для логотипа й меню. Так виглядає типовий flex grid css макет лендингу чи блогу. Селектор > обмежує стилі прямими нащадками, щоб вони не зачепили, наприклад, <header> усередині статті.

Вже розбираєшся в CSS? Час монетизувати це

Junior frontend-розробники заробляють від $600. Якщо тобі цікаво верстати – це може стати твоєю професією.

Які помилки роблять новачки з Flexbox і Grid?

  1. Будувати весь макет сторінки лише на Flexbox. Вкладені flex-контейнери на кілька рівнів замість однієї Grid-сітки ускладнюють код і ламаються на різних екранах.
  2. Задавати колонки через 1fr без minmax(). Довге слово чи картинка можуть розпирати колонку – запис minmax(0, 1fr) обмежує її ширину.
  3. Забувати про висоту контейнера при вертикальному центруванні. align-items: center нічого не змінить, якщо контейнер має висоту свого вмісту.
  4. Задавати відступи через margin замість gap. Це дає зайві відступи по краях і ускладнює адаптивність.
  5. Плутати justify-content і align-items. Перша властивість працює вздовж головної осі, друга – вздовж поперечної. При flex-direction: column вони "міняються місцями" візуально.
  6. Використовувати order для зміни логіки контенту. Візуальний порядок змінюється, а порядок для скрінрідерів і клавіатури – ні, що шкодить доступності.

Знайти такі помилки допомагає вбудований інструмент браузера: у Chrome і Firefox DevTools біля flex- і grid-контейнерів є позначки flex і grid, які підсвічують осі, лінії і проміжки прямо на сторінці.

CSS Flexbox game: як вивчити флекс через ігри

Найшвидший спосіб запам'ятати властивості CSS Flexbox – пройти безкоштовну браузерну гру, де кожен рівень вимагає написати правильний CSS. Ось перевірені ігри, з яких зручно стартувати новачкам:

  1. Flexbox Froggy – 24 рівні, де треба розставити жаб на латаття за допомогою justify-content, align-items, flex-direction, flex-wrap, order та інших властивостей. Найпопулярніша css flexbox game, доступна українською.
  2. Flexbox Defense – гра в жанрі tower defense: башти розставляються через властивості flex-контейнера.
  3. Flexbox Zombies – сюжетна гра з поступовим вивченням кожної властивості і завданнями на закріплення.
  4. Grid Garden – від авторів Flexbox Froggy, 28 рівнів для CSS Grid: поливати морквяну грядку треба через grid-column, grid-row і grid-template-columns.

Після проходження CSS Flexbox Froggy варто одразу перейти до Grid Garden: так порівняння CSS Grid vs Flex стає зрозумілим на практиці.

CSS Flexbox playground і генератори

CSS Flexbox playground – це інтерактивний редактор, де ви змінюєте властивості перемикачами і одразу бачите результат та готовий код. Такі інструменти зручні, щоб швидко перевірити поведінку flex-wrap чи align-content.

  1. Flexy Boxes – playground і css flexbox generator, що показує код для контейнера і кожного елемента.
  2. A Complete Guide to Flexbox від CSS-Tricks – найповніший css flexbox layout guide англійською зі схемами для кожної властивості.
  3. Loading.io Flexbox Generator – швидкий візуальний генератор flex-макетів.
  4. CodePen – для власних експериментів: створіть контейнер із кількома блоками і змінюйте властивості зі шпаргалки вище.

Генератор корисний для перевірки, але не замінює розуміння: на співбесіді і в реальному проєкті код пишуть руками.

CSS Flexbox test: як перевірити себе

Як самостійний CSS Flexbox test зверстайте без підказок три макети:

  1. Шапку сайту з логотипом ліворуч, меню по центру і кнопкою праворуч.
  2. Картку, відцентровану по вертикалі й горизонталі на весь екран.
  3. Сітку карток, яка показує 3 колонки на десктопі і 1 на мобільному, спочатку на Flexbox, потім на Grid.

Якщо всі три вийшли без генератора, базу Flexbox і Grid опановано. Схожі завдання на верстку адаптивних сторінок студенти Mate academy виконують ще до переходу до JavaScript.

Що вчити першим: Flexbox чи Grid?

Першим варто вивчати Flexbox: він простіший і покриває більшість щоденних задач верстки. CSS Grid логічно опановувати одразу після нього – для каркасів сторінок і складних сіток. Знати обидві технології обов'язково для junior frontend-розробника і корисно для верстальника та UI/UX дизайнера, який передає макети в розробку.

Mate academy – це українська EdTech-платформа, що з 2018 року допомагає опанувати технічні та нетехнічні IT-професії і отримати роботу в технологічній компанії. У курсі Front-end developer з працевлаштуванням Flexbox і Grid вивчають у модулі HTML + CSS Advanced, одразу після основ HTML, CSS і селекторів. Далі – JavaScript, React і власні проєкти для портфоліо, а 80% навчання на курсі – практика.

Понад 6 000 випускників Mate academy уже працюють в IT, а 80% знаходять роботу протягом кількох місяців після завершення навчання. Тривалість курсу Front-end – від 4 до 7 місяців залежно від формату.

FAQ: часті питання про CSS Flexbox і Grid

  • Що таке Flexbox?

    Flexbox – це модуль CSS для одновимірної верстки, який розташовує елементи в рядок або колонку, розподіляє між ними вільне місце і вирівнює їх. Вмикається властивістю display: flex на батьківському елементі.

  • Що таке флекс простими словами?

    Флекс – це скорочена назва Flexbox. Простими словами, це спосіб сказати браузеру "постав ці блоки в ряд, рівномірно розподіли місце і вирівняй по центру" кількома рядками CSS.

  • Що таке CSS Grid?

    CSS Grid – це двовимірна система верстки, яка ділить контейнер на рядки й колонки і розміщує елементи в комірках сітки. Вмикається властивістю display: grid.

  • Що краще: Grid чи Flexbox?

    Жоден не кращий універсально. Flexbox краще для одновимірних задач – меню, кнопок, центрування. Grid краще для двовимірних – каркасу сторінки, галерей, дашбордів. У реальних проєктах їх поєднують.

  • Чи можна використовувати Grid і Flexbox разом?

    Так, це стандартний підхід. CSS Grid задає структуру сторінки, а Flexbox вирівнює елементи всередині окремих блоків, наприклад, у шапці чи картці.

  • Чи замінить Grid Flexbox?

    Ні. Grid і Flexbox розв'язують різні задачі і доповнюють один одного. Обидві технології активно розвиваються і підтримуються всіма сучасними браузерами.

  • Як відцентрувати div по вертикалі й горизонталі?

    Задайте контейнеру display: flex; justify-content: center; align-items: center; і висоту, наприклад, min-height: 100vh. У Grid те саме робить display: grid; place-items: center;.

  • Чи працює gap у Flexbox?

    Так. Властивість gap для Flexbox підтримують Chrome з версії 84, Firefox з 63 і Safari з 14.1, тобто всі сучасні браузери. Вона замінює відступи через margin.

  • Що таке fr у CSS Grid?

    fr (fraction) – це одиниця, що означає частку вільного простору в grid-контейнері. Запис grid-template-columns: 1fr 2fr створює дві колонки, де друга отримує вдвічі більше вільного простору.

  • Які ігри допоможуть вивчити Flexbox і Grid?

    Найпопулярніші безкоштовні ігри – Flexbox Froggy (24 рівні), Flexbox Defense, Flexbox Zombies і Grid Garden (28 рівнів для CSS Grid). Вони вчать властивості через практичні завдання прямо в браузері.

Схожі матеріали:

Підібрати навчання