Инструмент для разработчиков

Генератор Flexbox

Задайте свойства и прочитайте простым языком, что они на самом деле делают.

Генератор Flexbox Работает на вашем устройстве
  • Работает в вашем браузере — текст никуда не отправляется
  • Без регистрации и квот, пользуйтесь бесплатно сколько угодно

Как это работает

Flexbox не сложен, но в одном почти все ошибаются: justify-content и align-items не означают «по горизонтали» и «по вертикали». Они означают «вдоль направления» и «поперёк него», а направление вы задаёте сами.

Ловушка, сказанная прямо

При flex-direction: row justify-content работает по горизонтали, а align-items — по вертикали. Переключитесь на column, и они полностью меняются местами. Каждый час, потерянный на flexbox, — это по сути именно это. Объяснение под настройками обновляется при смене направления, так что связь видна, а не заучивается.

Главная и поперечная ось

Главная ось — та, вдоль которой располагаются элементы; она задаётся flex-direction. Поперечная ось перпендикулярна ей. justify-content распределяет пространство вдоль главной оси; align-items размещает элементы по поперечной оси. Когда эти два названия закрепятся, остальное встанет на места.

gap и почему он заменил отступы

gap ставит пространство между элементами, не добавляя его снаружи перед первым и после последнего, — именно в этом ошибаются отступы, и именно это раньше исправляли хаками с :last-child. Он поддерживается во всех современных браузерах, и больше нет причин его избегать.

nowrap означает сжатие, а не переполнение

По умолчанию стоит nowrap, и элементы сжимаются меньше своего естественного размера, чтобы уместиться, а не переходят на новую строку. Поэтому текст иногда неожиданно сжимается внутри строки flex. Значение wrap позволяет элементам переходить вниз; min-width: 0 у дочернего элемента не даёт ему сжиматься меньше своего содержимого.

Центрирование в обоих направлениях

justify-content: center вместе с align-items: center центрирует элемент в обоих направлениях независимо от flex-direction — это единственное сочетание, которое стоит выучить наизусть.

Частые вопросы

Генератор Flexbox: вопросы

Почему align-items сдвигает элементы по горизонтали?

Потому что flex-direction равен column. Эти два свойства следуют за направлением, а не за экраном.

В чём разница между главной и поперечной осью?

Главная ось — это направление, в котором располагаются элементы, оно задаётся flex-direction. Поперечная ось перпендикулярна ей.

Как отцентрировать элемент в обоих направлениях?

justify-content: center вместе с align-items: center.

Почему мой текст сжат?

Значение по умолчанию nowrap сжимает элементы, чтобы они уместились. Задайте flex-wrap: wrap или min-width: 0 у дочернего элемента.

Можно ли использовать gap с flexbox?

Да, во всех современных браузерах. Это лучше, чем отступы, потому что gap не добавляет пространство по краям.