Bootstrap - Flex: Полное руководство для начинающих

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

Bootstrap - 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