Bootstrap - Flex: Полное руководство для начинающих
Здравствуйте, будущие веб-разработчики! Я рад быть вашим проводником в увлекательное путешествие в мир системы Flex из Bootstrap. Как某人, кто преподаёт информатику уже много лет, я могу заверить вас, что овладение Flex изменит вашу игру в веб-дизайне. Так что погружаемся и вместе разгадываем тайны Flex!

Что такое Bootstrap Flex?
Прежде чем мы начнём flex-ить наши кодовые мышцы (и да, это каламбур!), давайте поймём, что такое Bootstrap Flex. Flex - это мощная система компоновки в Bootstrap, которая позволяет создавать гибкие и адаптивные designs с лёгкостью. Это как магическая палочка, которая раскладывает ваши веб-элементы именно так, как вы хотите!
Включение flex-поведения
Чтобы начать использовать Flex, нам нужно сначала его включить. Это как включить свет перед тем, как вы можете видеть в тёмной комнате. Вот как это делается:
<div class="d-flex">
<!-- Ваши flex-элементы идут сюда -->
</div>Эта простая класс d-flex делает ваш контейнер flex-контейнером. Всё, что находится внутри этого контейнера, становится flex-элементом. Круто, правда?
Направление
Теперь, когда мы включили Flex, давайте поговорим о направлении. В мире Flex вы можете располагать свои элементы горизонтально или вертикально. Это как выбирать между книжной полкой (вертикальной) и конвейерной лентой (горизонтальной).
<div class="d-flex flex-row">
<div>Элемент 1</div>
<div>Элемент 2</div>
<div>Элемент 3</div>
</div>
<div class="d-flex flex-column">
<div>Элемент 1</div>
<div>Элемент 2</div>
<div>Элемент 3</div>
</div>В этом примере flex-row располагает элементы горизонтально (слева направо), в то время как flex-column укладывает их вертикально (сверху вниз).
Выравнивание содержимого
Выравнивание содержимого в Flex похоже на раскладывание книг на полке. Вы можете их толкать влево, вправо, в центр или равномерно распределять. Давайте посмотрим, как это делается:
<div class="d-flex justify-content-start">...</div>
<div class="d-flex justify-content-end">...</div>
<div class="d-flex justify-content-center">...</div>
<div class="d-flex justify-content-between">...</div>
<div class="d-flex justify-content-around">...</div>Каждый из этих классов распределяет flex-элементы по главной оси по-разному. Поиграйте с ними, чтобы увидеть магию!
Выравнивание элементов
While justify-content работает по главной оси, align-items dealing with the cross axis. Think of it as adjusting the height of books on a shelf. Here's how you can use it:
<div class="d-flex align-items-start">...</div>
<div class="d-flex align-items-end">...</div>
<div class="d-flex align-items-center">...</div>
<div class="d-flex align-items-baseline">...</div>
<div class="d-flex align-items-stretch">...</div>Эти классы помогают вам контролировать, как flex-элементы выравниваются вертикально внутри flex-контейнера.
Выравнивание самого элемента
Иногда вы хотите, чтобы один элемент нарушил ranks и выровнялся по-другому. Вот где align-self comes in handy:
<div class="d-flex">
<div class="align-self-start">Start</div>
<div class="align-self-center">Center</div>
<div class="align-self-end">End</div>
</div>Это позволяет отдельным flex-элементам иметь другое выравнивание, чем их собратья.
Заполнение
Класс flex-fill похож на губку - он делает flex-элемент поглощать всё доступное пространство:
<div class="d-flex">
<div class="flex-fill">Flex-элемент с большим количеством содержимого</div>
<div class="flex-fill">Flex-элемент</div>
<div class="flex-fill">Flex-элемент</div>
</div>Все элементы с flex-fill будут иметь одинаковую ширину, независимо от их содержимого.
Увеличение и сжатие
Свойства увеличения и сжатия контролируют, как flex-элементы расширяются или сужаются. Это как иметь резиновые ленты в вашем макете:
<div class="d-flex">
<div class="flex-grow-1">Увеличивается</div>
<div>Фиксированный</div>
<div class="flex-shrink-1">Сжимается</div>
</div>Элемент с flex-grow-1 будет увеличиваться, чтобы заполнить доступное пространство, в то время как flex-shrink-1 будет сжиматься, если это необходимо.
Автоматические отступы
Автоматические отступы в Flex похожи на магические разделители. Они отталкивают flex-элементы друг от друга:
<div class="d-flex">
<div class="mr-auto">Слева</div>
<div>Центр</div>
<div class="ml-auto">Справа</div>
</div>Это создаёт лево-центрально-правый макет с автоматическим разделением.
Перенос
Когда у вас слишком много элементов, чтобы они уместились в одной строке, flex-wrap приходит на помощь:
<div class="d-flex flex-wrap">
<div>Элемент 1</div>
<div>Элемент 2</div>
<div>Элемент 3</div>
<div>Элемент 4</div>
<div>Элемент 5</div>
</div>Это позволяет элементам переносятся на следующую строку, когда они заканчивают место.
Порядок
Свойство order позволяет вам перерасполагать flex-элементы, не изменяя ваш HTML. Это как иметь пульт управления для вашего макета:
<div class="d-flex">
<div class="order-3">Первый в DOM, последний в макете</div>
<div class="order-2">Второй в DOM, второй в макете</div>
<div class="order-1">Третий в DOM, первый в макете</div>
</div>Выравнивание содержимого
Когда у вас есть несколько строк flex-элементов, align-content помогает вам контролировать, как эти строки разделены:
<div class="d-flex flex-wrap align-content-start" style="height: 200px;">
<div>Элемент</div>
<div>Элемент</div>
...
</div>Это может быть особенно полезно для создания сетчатых макетов.
Media object
Наконец, давайте рассмотрим практический пример - media object. Это.common pattern в веб-дизайне, и Flex делает его super easy:
<div class="d-flex">
<div class="flex-shrink-0">
<img src="..." alt="...">
</div>
<div class="flex-grow-1 ms-3">
Это некоторое содержимое из media компонента. Вы можете заменить это любым содержимым и адаптировать его по мере необходимости.
</div>
</div>Это создаёт гибкий media object с изображением слева и содержимым справа.
И вот и всё! Вы только что flex-ировали свой путь через систему Flex из Bootstrap. Помните, практика makes perfect, так что не бойтесь экспериментировать с этими свойствами. Before you know it, you'll be creating flexible, responsive layouts like a pro!
Here's a table summarizing all the Flex properties we've covered:
| Свойство | Описание | Пример классов | 
|---|---|---|
| Включение Flex | Делает контейнер flex-контейнером | d-flex | 
| Направление | Устанавливает главную ось flex-контейнера | flex-row,flex-column | 
| Выравнивание содержимого | Выравнивает элементы по главной оси | justify-content-start,justify-content-end,justify-content-center,justify-content-between,justify-content-around | 
| Выравнивание элементов | Выравнивает элементы по поперечной оси | align-items-start,align-items-end,align-items-center,align-items-baseline,align-items-stretch | 
| Выравнивание самого элемента | Выравнивает отдельный элемент | align-self-start,align-self-center,align-self-end | 
| Заполнение | Делает элемент поглощать доступное пространство | flex-fill | 
| Увеличение | Позволяет элементу увеличиваться | flex-grow-1 | 
| Сжатие | Позволяет элементу сжиматься | flex-shrink-1 | 
| Автоматические отступы | Создаёт пространство между элементами | mr-auto,ml-auto | 
| Перенос | Позволяет элементам переносятся на следующую строку | flex-wrap | 
| Порядок | Изменяет порядок элементов | order-1,order-2, etc. | 
| Выравнивание содержимого | Выравнивает flex-линии | align-content-start,align-content-end, etc. | 
Счастливого flex-ирования, будущие суперзвезды веб-дизайна!
Credits: Image by storyset
