Две оси вместо «по горизонтали»
Свойство flex-direction определяет главную ось. При row элементы идут вдоль строки, при column — вдоль колонки. Поперечная ось перпендикулярна главной. justify-content распределяет свободное место вдоль главной оси, а align-items выравнивает элементы по поперечной.
Поэтому инструкция «justify-content центрирует по горизонтали» работает только в некоторых условиях. Направление письма и выбранная ось тоже имеют значение.
Панель, которая выдержит длинную подпись
Пусть слева находится название раздела, а справа — действия. Разрешим перенос строк и дадим заголовку право сжиматься. Отступ margin-inline-end: auto займёт доступное свободное пространство после заголовка.
.toolbar {
display: flex;
align-items: center;
flex-wrap: wrap;
gap: .75rem;
}
.toolbar__title {
min-width: 0;
margin-inline-end: auto;
overflow-wrap: anywhere;
}
.toolbar__actions {
display: flex;
flex-wrap: wrap;
gap: .5rem;
}Когда лучше выбрать Grid
Flexbox удобен для группы кнопок, строки поиска или содержимого карточки. Если нужно согласовать колонки сразу в нескольких строках, рассмотрите Grid. Перенесённые строки flex-контейнера распределяют место независимо, поэтому их границы колонок могут не совпадать.
Не используйте order только для того, чтобы исправить неудобный порядок HTML. Сначала проверьте, какой порядок нужен при чтении и работе с клавиатурой.
Попробуйте сами
Соберите панель с заголовком и тремя кнопками. Замените одну подпись на длинную, увеличьте масштаб до 200% и проверьте перенос.
Почему элемент отказывается сжиматься?
Проверьте минимальный размер, длинные неразрывные строки и flex-shrink. Часто помогает min-width: 0 у элемента, но содержимому тоже нужен допустимый перенос или прокрутка.
Документация и следующий шаг
Продолжите практику: Первый интерактивный интерфейс без фреймворка.