
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, або флекс, – це модуль CSS для розташування елементів уздовж однієї осі: горизонтально в рядок або вертикально в колонку. Флекс сам розподіляє вільне місце між елементами і вирівнює їх, а з flex-wrap: wrap – переносить на новий рядок, коли місця не вистачає.
Щоб увімкнути Flexbox, достатньо задати батьківському елементу display: flex. Після цього всі його прямі нащадки стають flex-елементами, і ними можна керувати через властивості контейнера.
Основні поняття CSS Flexbox:
display: flex, який керує розташуванням дочірніх елементів.flex-direction.margin.Флекс це не "сітка" в повному розумінні: він не знає, що відбувається в сусідньому рядку. Кожен рядок flex-контейнера розраховується окремо, і саме тому 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 має 7 ключових властивостей контейнера і 6 властивостей елементів – їх достатньо для більшості задач верстки. Нижче – CSS Flexbox cheat sheet і короткий css flexbox guide по властивостях, який зручно тримати під рукою.
| Властивість контейнера | Що робить | Основні значення |
|---|---|---|
| display | Вмикає Flexbox | flex, 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 (рядки / колонки) |
| Властивість елемента | Що робить | Приклад |
|---|---|---|
| flex-grow | Яку частку вільного місця забирає елемент | flex-grow: 1 |
| flex-shrink | Наскільки елемент стискається, коли місця бракує | flex-shrink: 0 – не стискати |
| flex-basis | Початковий розмір елемента до розподілу місця | flex-basis: 200px |
| flex | Скорочення для grow, shrink і basis | flex: 1 = 1 1 0% |
| align-self | Окреме вирівнювання одного елемента по поперечній осі | align-self: flex-end |
| order | Змінює візуальний порядок елемента | order: -1 – поставити першим |
Значення за замовчуванням для flex-елемента – flex: 0 1 auto: елемент не розтягується, але може стискатися, а його початковий розмір визначають width/height або вміст.
Щоб відцентрувати елемент по вертикалі й горизонталі, задайте контейнеру три властивості: 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.
Є два способи, і вони розв'язують різні задачі:
justify-content: flex-end на контейнері.margin-left: auto на цьому елементі. Наприклад, кнопка "Увійти" в шапці сайту, яку треба відсунути від меню..header { display: flex; align-items: center; gap: 24px; }
.header .login { margin-left: auto; } /* забирає весь вільний простір зліва */Властивість gap у Flexbox задає проміжок між елементами і підтримується в усіх сучасних браузерах: Chrome з версії 84, Firefox з 63, Safari з 14.1. Раніше відступи у флексі робили через margin і від'ємні відступи контейнера – тепер це зайве.
gap додає простір лише між елементами, а не по краях контейнера. Можна задати окремо для рядків і колонок: gap: 12px 24px або row-gap і column-gap.
Самостійно розібратися у верстці в CSS дійсно складно. Отримай знання та досвід від професіоналів!

CSS Grid – це двовимірна система верстки, яка ділить контейнер на рядки й колонки і розміщує елементи в комірках цієї сітки. На відміну від флексу, grid це модель "від контейнера": розмір колонок і рядків задається заздалегідь, а елементи заповнюють готову структуру.
Основні поняття CSS Grid:
display: grid.grid-template-columns і grid-template-rows.header чи sidebar.fr – частка вільного простору. 1fr 2fr означає, що друга колонка отримує вдвічі більше вільного простору, ніж перша.<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+). Вона дозволяє вкладеній сітці успадковувати колонки батьківської – наприклад, щоб заголовки і кнопки в картках різної висоти стояли на одній лінії.
Головна різниця: Flexbox працює в одному вимірі і будує макет від вмісту, а Grid працює у двох вимірах і будує макет від контейнера. У флексі розмір елемента залежить від його контенту і flex-grow, у Grid – від колонок, які задав контейнер.
| Критерій | CSS Flexbox | CSS Grid |
|---|---|---|
| Вимірність | Одновимірний: рядок або колонка | Двовимірний: рядки і колонки одночасно |
| Хто задає розмір | Вміст і властивості елементів (flex-grow, flex-basis) | Контейнер (grid-template-columns, grid-template-rows) |
| Перенесення рядків | Кожен рядок рахується окремо, елементи можуть мати різну ширину | Елементи зберігають ширину колонок у всіх рядках |
| Типові задачі | Навігація, кнопки, форми, вирівнювання і центрування | Каркас сторінки, галереї, дашборди, сітки карток |
| Ключові властивості | justify-content, align-items, flex | grid-template-columns, grid-area, fr, minmax() |
| Вкладені сітки | Немає власного механізму | subgrid |
| Підтримка браузерами у 2026 | Усі сучасні браузери, gap – з 2021 року | Усі сучасні браузери, subgrid – з 2023 року |
Простий тест для вибору: якщо достатньо сказати "постав ці елементи в ряд", це Flexbox. Якщо потрібно сказати "ця картка займає дві колонки, а ця – два рядки", це Grid.
Flexbox – кращий вибір, коли:
flex: 2 для email і flex: 1 для імені.CSS Grid – кращий вибір, коли:
repeat(auto-fill, minmax()).У реальних проєктах 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> усередині статті.
Junior frontend-розробники заробляють від $600. Якщо тобі цікаво верстати – це може стати твоєю професією.
1fr без minmax(). Довге слово чи картинка можуть розпирати колонку – запис minmax(0, 1fr) обмежує її ширину.align-items: center нічого не змінить, якщо контейнер має висоту свого вмісту.margin замість gap. Це дає зайві відступи по краях і ускладнює адаптивність.justify-content і align-items. Перша властивість працює вздовж головної осі, друга – вздовж поперечної. При flex-direction: column вони "міняються місцями" візуально.order для зміни логіки контенту. Візуальний порядок змінюється, а порядок для скрінрідерів і клавіатури – ні, що шкодить доступності.Знайти такі помилки допомагає вбудований інструмент браузера: у Chrome і Firefox DevTools біля flex- і grid-контейнерів є позначки flex і grid, які підсвічують осі, лінії і проміжки прямо на сторінці.
Найшвидший спосіб запам'ятати властивості CSS Flexbox – пройти безкоштовну браузерну гру, де кожен рівень вимагає написати правильний CSS. Ось перевірені ігри, з яких зручно стартувати новачкам:
justify-content, align-items, flex-direction, flex-wrap, order та інших властивостей. Найпопулярніша css flexbox game, доступна українською.grid-column, grid-row і grid-template-columns.Після проходження CSS Flexbox Froggy варто одразу перейти до Grid Garden: так порівняння CSS Grid vs Flex стає зрозумілим на практиці.
CSS Flexbox playground – це інтерактивний редактор, де ви змінюєте властивості перемикачами і одразу бачите результат та готовий код. Такі інструменти зручні, щоб швидко перевірити поведінку flex-wrap чи align-content.
Генератор корисний для перевірки, але не замінює розуміння: на співбесіді і в реальному проєкті код пишуть руками.
Як самостійний CSS Flexbox test зверстайте без підказок три макети:
Якщо всі три вийшли без генератора, базу Flexbox і Grid опановано. Схожі завдання на верстку адаптивних сторінок студенти Mate academy виконують ще до переходу до JavaScript.
Першим варто вивчати 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 місяців залежно від формату.
Flexbox – це модуль CSS для одновимірної верстки, який розташовує елементи в рядок або колонку, розподіляє між ними вільне місце і вирівнює їх. Вмикається властивістю display: flex на батьківському елементі.
Флекс – це скорочена назва Flexbox. Простими словами, це спосіб сказати браузеру "постав ці блоки в ряд, рівномірно розподіли місце і вирівняй по центру" кількома рядками CSS.
CSS Grid – це двовимірна система верстки, яка ділить контейнер на рядки й колонки і розміщує елементи в комірках сітки. Вмикається властивістю display: grid.
Жоден не кращий універсально. Flexbox краще для одновимірних задач – меню, кнопок, центрування. Grid краще для двовимірних – каркасу сторінки, галерей, дашбордів. У реальних проєктах їх поєднують.
Так, це стандартний підхід. CSS Grid задає структуру сторінки, а Flexbox вирівнює елементи всередині окремих блоків, наприклад, у шапці чи картці.
Ні. Grid і Flexbox розв'язують різні задачі і доповнюють один одного. Обидві технології активно розвиваються і підтримуються всіма сучасними браузерами.
Задайте контейнеру display: flex; justify-content: center; align-items: center; і висоту, наприклад, min-height: 100vh. У Grid те саме робить display: grid; place-items: center;.
Так. Властивість gap для Flexbox підтримують Chrome з версії 84, Firefox з 63 і Safari з 14.1, тобто всі сучасні браузери. Вона замінює відступи через margin.
fr (fraction) – це одиниця, що означає частку вільного простору в grid-контейнері. Запис grid-template-columns: 1fr 2fr створює дві колонки, де друга отримує вдвічі більше вільного простору.
Найпопулярніші безкоштовні ігри – Flexbox Froggy (24 рівні), Flexbox Defense, Flexbox Zombies і Grid Garden (28 рівнів для CSS Grid). Вони вчать властивості через практичні завдання прямо в браузері.