Урок 24. Примеры: Выравнивание: justify-content, align-items, gap

📁 Раздел: Flexbox ⏱️ Время изучения: ~60 мин 🎯 Сложность: Средняя
#align-items #align-content #gap #row-gap #align-self #flex-grow #flex-shrink #flex-basis

⚡ Кратко

Смотри на «Результат» рядом с кодом. У каждого примера меняется одно свойство — сравнивай, как сдвигаются цветные блоки по поперечной оси или как делится свободное место.

Рабочие примеры

Примеры идут по возрастанию: сначала align-items, затем «выбивающийся» элемент align-self, потом gap, и наконец flex-grow/flex: 1.

1. align-items — выравнивание всех по поперечной оси

Контейнеру задана высота, поэтому видно разницу. Слева flex-start, справа center.

align-items: flex-start

1
2
3

align-items: center

1
2
3
.row {
  display: flex;
  min-height: 96px;
  align-items: flex-start; /* или center, flex-end, stretch */
}

2. align-self — один элемент выбивается из общего выравнивания

Вся строка выровнена по центру (align-items: center), но второй блок прижат к низу через align-self: flex-end.

1
2 ⤓
3
.row { display: flex; min-height: 110px; align-items: center; }

/* перебивает align-items только для этого элемента */
.row .item-2 { align-self: flex-end; }

3. gap — промежутки без margin-хаков

Один gap задаёт одинаковое расстояние между всеми элементами. Нет отступа у краёв и не нужно обнулять margin у последнего.

gap: 8px

A B C

gap: 28px

A B C
.row {
  display: flex;
  gap: 8px;   /* промежуток только МЕЖДУ элементами */
}

/* раздельно: gap: row-gap column-gap */
.grid { display: flex; flex-wrap: wrap; gap: 8px 28px; }

4. flex-grow — кто занимает свободное место

У второго блока flex-grow: 1 — он один «доедает» всё свободное пространство строки, остальные остаются по содержимому.

меню поиск (flex-grow: 1) войти
.toolbar { display: flex; gap: 8px; }

/* растягивается только поле поиска */
.toolbar .search { flex-grow: 1; }

5. flex: 1 — равные колонки

Шорткат flex: 1 (= flex: 1 1 0) на всех элементах делит ширину поровну, независимо от длины содержимого.

1
колонка 2
3
.cols { display: flex; gap: 8px; }
.cols > * { flex: 1; }   /* flex: 1 1 0 — равные доли */

6. Панель действий: всё вместе

Логотип слева, поле растягивается (flex: 1), кнопка справа; выравнивание по центру по поперечной оси, промежутки — gap.

▦ Logo
.toolbar {
  display: flex;
  align-items: center;
  gap: 12px;
}
.toolbar input { flex: 1; }      /* поле тянется */
/* кнопка и логотип остаются своего размера */
Эксперимент: откройте любой пример в DevTools (F12) и меняйте align-items / gap / flex-grow прямо в панели — результат обновится мгновенно.

Навигация