front-end
March 9, 2021

Верстка за допомогою CSS Flexbox

09.03.21 ⏰5 хв

Верстка — заняття приємне і цікаве, коли під руками є прогресивні інструменти, які її спрощують. Flexbox — це певного роду конструктор, яким можна скласти сторінку блоками у той вигляд, який Вам потрібно досягти.

Навіщо придумали CSS Flexbox?

Ця технологія призначена для створення гнучких макетів. За допомогою Flexbox можна дуже просто і гнучко розставити елементи в контейнері, розподілити обсяг пам'яті, доступний між ними, і вирівняти їх тим чи іншим способом, навіть якщо вони не мають конкретних розмірів.

CSS Flexbox дозволяє створити адаптивний дизайн набагато простіше, ніж з використанням Float та позиціювання.

Flexbox можна використовувати як для CSS розмітки цілої сторінки, так і її окремих блоків.

Чи підтримується CSS Flexbox браузерами?

CSS Flexbox підтримується всіма сучасними браузерами (з використанням префіксів: IE10 +, Edge12 +, Firefox 2+, Chrome 4+, Safari 3.1+, Opera 12.1+, iOS Safari 3.2, Opera mini, Android 2.1 +, Blackberry 7 +).

Основи CSS Flexbox

Щоб створити CSS розмітку за допомогою Flexbox, потрібно задати необхідному HTML елементу CSS-властивість display зі значенням flex або flex-inline.

Після цього даний елемент стає flex-контейнером, а всі його безпосередні дочірні елементи — flex-елементами. Коли ми говоримо про flexbox, то маємо на увазі під цим тільки елемент з display: flex або display: flex-inline і всі елементи безпосередньо розташовані в ньому. Таким чином в CSS Flexbox є всього два типи елементів: flex-контейнер і flex-елемент.

Властивості flex-контейнера

flex-direction

Задає напрямок головної осі. Можливі значення:

  • row — зліва направо (за замовчуванням);
  • row-reverse — справа наліво;
  • column — зверху вниз;
  • column-reverse — знизу вверх.

flex-wrap

Визначає багаторядковість контейнера. Можливі значення:

  • nowrap — flex-елементи шикуються в один рядок, якщо не поміщаються в контейнер, то виходять за його межі (за замовчуванням);
  • wrap — flex-елементи шикуються в декілька рядків, якщо не поміщаються в один;
  • wrap-reverse — схожий на wrap, але перенесення відбувається знизу вгору.

flex-flow

Визначає одразу два параметри: flex-direction і flex-wrap.
Наприклад, flex-flow: column wrap;

justify-content

Визначає як будуть вирівняні елементи по головній осі. Можливі значення:

  • flex-start — flex-елементи притискаються до початку головної осі (за замовчуванням);
  • flex-end — flex-елементи притискаються до кінця головної осі;
  • center — flex-елементи вирівнюються по центру головної осі;
  • space-between — flex-елементи розподіляються уздовж головної осі, при цьому перший елемент притиснутий до початку осі, а останній — до кінця;
  • space-around — flex-елементи розподіляються уздовж головної осі, при цьому вільний простір ділиться порівну між елементами. Але варто зазначити, що проміжки підсумовуються і відстань між елементами буде у два рази більша, ніж відстань між краями контейнера і крайніми елементами.

align-items

Вирівнює елементи по поперечній осі. Можливі значення:

  • flex-start — flex-елементи притискаються до початку поперечної осі (за замовчуванням);
  • flex-end — flex-елементи притискаються до кінця поперечної осі;
  • center — flex-елементи вирівнюються по центру поперечної осі;
  • baseline — flex-елементи вирівнюються по своїй базовій лінії.
  • stretch — flex-елементи розтягуються, займаючи все доступне місце по поперечній осі. Але якщо для елементів задана висота, то stretch буде проігнорований.

align-content

Вирівнює цілі рядки flex-елементів по поперечній осі. Можливі значення:

  • flex-start — рядки flex-елементів притискаються до початку поперечної осі (за замовчуванням);
  • flex-end — рядки flex-елементів притискаються до кінця поперечної осі;
  • center — рядки flex-елементів вирівнюються по центру поперечної осі;
  • space-between — рядки flex-елементів розподіляються вздовж поперечної осі, при цьому перший рядок притиснутий до початку осі, а останній — до кінця;
  • space-around — рядки flex-елементів розподіляються вздовж поперечної осі, при цьому вільний простір ділиться порівну між рядками. Але варто зазначити, що проміжки підсумовуються і відстань між рядками у два рази більша, ніж відстань між краями контейнера і крайніми рядками.
  • stretch — рядки flex-елементів розтягуються, займаючи все доступне місце по поперечній осі. Але якщо для елементів задана висота, то stretch буде проігнорований.


Цю статтю можна використовувати як шпаргалку, а от на практиці спробуйте поробити вправи на платформі w3school, там все коротко описано, але є класні приклади і можливість спробувати самому.

Коли проробите вправи там, можете закріпити знання за допомогою гри Flexbox Froggy, там все ще й українською мовою. В такий спосіб дуже легко засвоюється матеріал.

Успіху!