CSS Flexbox — это технология для создания сложных гибких макетов за счёт правильного размещения элементов на странице. Мы (freecodecamp.org) решили объяснить свойства CSS Flexbox с использованием анимации.
Примечание Вы читаете улучшенную версию некогда выпущенной нами статьи.1
Свойство 1: Display: Flex
Есть страница:
На ней размещено 4 div
разных размеров, которые находятся внутри серого div
. У каждого div
есть свойство display: block
. Поэтому каждый блок занимает всю ширину строки. Чтобы начать работать с CSS Flexbox, нужно сделать контейнер flex-контейнером. Делается это так:
#container {
display: flex;
}
Так у блоков появилось свойство flex-контекст, которое в дальнейшем позволит ими управлять гораздо проще, чем с использованием стандартного CSS.2
Свойство 2: Flex Direction
У flex-контейнера есть две оси: главная и перпендикулярная ей.
По умолчанию все предметы располагаются вдоль главной оси — слева направо. Именно поэтому блоки в предыдущем примере выстроились в линию, когда мы применили display: flex
. А вот flex-direction
позволяет вращать главную ось.
#container {
display: flex;
flex-direction: column;
}
Обратите внимание, что flex-direction: column
не выравнивает блоки по оси, перпендикулярной главной. Главная ось сама меняет своё расположение, и теперь направлена сверху вниз.
Есть ещё парочка свойств для flex-direction
: row-reverse
и column-reverse
.
Свойство 3: Justify Content
Отвечает за выравнивание элементов по главной оси:
#container {
display: flex;
flex-direction: row;
justify-content: flex-start;
}
Justify-content
может принимать 5 значений:
flex-start
flex-end
center
space-between
space-around
Space-between
задаёт одинаковое расстояние между блоками, но не между контейнером и блоками. Space-around
также задаёт одинаковое расстояние между блоками, но теперь расстояние между контейнером и блоками равно половине расстояния между блоками.4
Свойство 4: Align Items
Если justify-content
работает с главной осью, то align-items
работает с осью, перпендикулярной главной оси. Вернёмся к flex-direction: row
и пройдёмся по командам align-items
:
flex-start
flex-end
center
stretch
baseline
Стоит заметить, что для align-items: stretch
высота блоков должна быть равна auto
. Для align-items: baseline
теги параграфа убирать не нужно, иначе получится так:
Чтобы получше разобраться в том, как работают оси, объединим justify-content
с align-items
и посмотрим, как работает выравнивание по центру для двух свойств flex-direction
:
Свойство 5: Align Self
Позволяет выравнивать элементы по отдельности:
#container {
align-items: flex-start;
}
.square#one {
align-self: center;
}
// Only this square will be centered.
Для двух блоков применим align-self
, а для остальных — align-items: center
и flex-direction: row
.
Источник: «How Flexbox works — explained with big, colorful, animated gifs»
Где вы раньше то были с этой статьей. Реально полезно.
CSS на гифках реально понятнее, чем просто в книжках, тоже сейчас только дошло…
Вот через ваши gif картинки я реально понял как работает CSS Flexbox!
Работа CSS Flexbox в gif картинках — это просто гениально! Спасибо! ???