Урок 25. Примеры: Практические шаблоны Flexbox

📁 Раздел: Flexbox ⏱️ Время изучения: ~75 мин 🎯 Сложность: Средняя
#display #flex-direction #justify-content #align-items #flex-wrap #gap

⚡ Кратко

Пять готовых паттернов с живым результатом. Рядом с каждым — реальный блок (то, что увидит пользователь) и его CSS. Скопируй рецепт, поменяй содержимое — и он работает.

Рабочие паттерны

В каждом примере сверху — живой результат, ниже — код. Паттерны идут по возрастанию: от простого навбара до собранной мини-страницы.

1. Навбар: логотип слева, меню справа

justify-content: space-between разводит логотип и меню по краям, а align-items: center выравнивает их по вертикали.

.navbar {
  display: flex;
  justify-content: space-between; /* лого ← →  меню */
  align-items: center;            /* по центру по вертикали */
}
.navbar .menu {
  display: flex;
  gap: 16px;
}

2. Сетка карточек: flex-wrap + gap

Карточки стоят в ряд и автоматически переносятся на новую строку, когда не хватает ширины. gap задаёт промежутки и по горизонтали, и по вертикали.

Карточка 1
Карточка 2
Карточка 3
Карточка 4
.card-list {
  display: flex;
  flex-wrap: wrap; /* перенос на новую строку */
  gap: 12px;
}
.card {
  flex: 1 1 120px; /* растут, сжимаются, базовая ширина 120px */
}

3. Идеальное центрирование

Блок ровно по центру и по горизонтали, и по вертикали — двумя строками. justify-content: center центрирует по главной оси, align-items: center — по поперечной.

Я по центру
.hero {
  display: flex;
  justify-content: center; /* по горизонтали */
  align-items: center;     /* по вертикали */
  height: 140px;
}

4. Медиа-объект: аватар + текст

Аватар фиксированной ширины слева, текст занимает весь оставшийся простор благодаря flex: 1. Классика для комментариев и уведомлений.

АП
Анна Петрова
Отличный урок! Паттерн медиа-объекта наконец-то стал понятным.
.media {
  display: flex;
  gap: 12px;
  align-items: flex-start;
}
.media__avatar {
  flex: 0 0 48px; /* не растёт, не сжимается, 48px */
}
.media__text {
  flex: 1; /* занимает весь остаток */
}

5. Sticky-footer: подвал всегда внизу

Страница — вертикальная колонка во всю высоту. main с flex: 1 растёт и выталкивает footer вниз, даже если контента мало. В превью высота ограничена для наглядности.

Шапка
Контента мало, но footer всё равно внизу.
Подвал
.page {
  display: flex;
  flex-direction: column;
  min-height: 100vh; /* во всю высоту окна */
}
.site-main {
  flex: 1; /* растёт и прижимает footer вниз */
}
Эксперимент: открой любой пример в DevTools (F12), включи flex-overlay на контейнере и поменяй justify-content или gap прямо в панели — результат обновится мгновенно.

Навигация