Урок 23. Примеры: Главная и поперечная оси

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

⚡ Кратко

Рядом с каждым кодом — живой результат. Меняйте значение justify-content, align-items или flex-direction в DevTools и сразу видите, как сдвигаются блоки.

В каждом примере сверху — реальный результат (контейнер с пунктирной рамкой = flex-container, цветные блоки = flex-items), снизу — код. Свойства заданы на контейнере.

1. Главная ось при row vs column

Одинаковые блоки, но направление главной оси разное. При row элементы идут в строку, при column — в столбец.

flex-direction: row (по умолчанию)

1
2
3

flex-direction: column

1
2
3
/* lesson-23/styles.css */
.row    { display: flex; flex-direction: row; }
.column { display: flex; flex-direction: column; }

2. justify-content — все значения (вдоль главной оси)

Контейнер шире, чем нужно блокам, поэтому видно, как распределяется свободное место по главной оси.

flex-start

1
2
3

center

1
2
3

flex-end

1
2
3

space-between

1
2
3

space-around

1
2
3

space-evenly

1
2
3
/* lesson-23/styles.css */
.bar {
  display: flex;
  justify-content: space-between; /* меняйте значение */
}
/* flex-start | center | flex-end
   space-between | space-around | space-evenly */

3. align-items — все значения (поперёк, по cross-оси)

Контейнер выше блоков (задана высота), поэтому видно выравнивание по поперечной оси. У третьего блока намеренно больше высота — для baseline и stretch это заметно.

stretch (по умолчанию)

1
2
3

flex-start

1
2
3

center

1
2
3

flex-end

1
2
3

baseline (выравнивание по тексту)

aA
bB
cC
/* lesson-23/styles.css */
.bar {
  display: flex;
  align-items: center; /* меняйте значение */
}
/* stretch | flex-start | center
   flex-end | baseline */

4. Центрирование по обеим осям

Классический приём: justify-content: center + align-items: center ставят блок строго в центр контейнера.

по центру
/* lesson-23/styles.css */
.hero {
  display: flex;
  justify-content: center; /* центр по главной */
  align-items: center;     /* центр по поперечной */
  min-height: 110px;
}

5. flex-wrap: nowrap vs wrap

Шесть блоков в узком контейнере. При nowrap они сжимаются в одну линию; при wrap — переносятся на новые линии.

flex-wrap: nowrap (одна линия, блоки сжаты)

1
2
3
4
5
6

flex-wrap: wrap (перенос на новые линии)

1
2
3
4
5
6
/* lesson-23/styles.css */
.gallery {
  display: flex;
  flex-wrap: wrap; /* nowrap — по умолчанию */
}
Эксперимент: откройте любой пример в DevTools (F12), выделите контейнер с пунктирной рамкой и меняйте justify-content/align-items прямо в панели — результат обновится мгновенно.

Навигация