Генератор 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 не добавляет пространство по краям.