Практическое применение Flexbox
Инлайн списки
Одно из основных применений Flexbox — инлайн списки.
Представьте, что у вас есть список элементов, которые нужно отобразить не в виде стандартного маркированного списка, а в виде строки…
<ul class="list-inline">
<li>Merlin</li>
<li>Ursula</li>
<li>Radagast</li>
</ul>Для этого можно использовать Flexbox.
Для инлайн списков можно установить flex-wrap значение wrap. Кроме того, мне нравится выравнивать элементы по центру, но это выбор стиля, который может варьироваться от проекта к проекту.
Значение свойства list-style-type, установленное как пустая строка (""), удаляет буллеты, сохраняя семантику списка.
.list-inline {
display: flex;
gap: 1em;
flex-wrap: wrap;
align-items: center;
list-style-type: "";
margin-left: 0;
}Классы модификаторов инлайн списков
Мой любимый подход к архитектуре CSS, HUG CSS, активно использует классы-модификаторы, чтобы подгонять и настраивать компоненты.
Для .list-inline я часто добавляю классы-модификаторы для изменения расстояния между элементами списка, а также классы модификации выравнивания.
.list-inline-spaced {
column-gap: 2.875em;
}
.list-inline-compact {
column-gap: 0.5em;
}
.list-inline-center {
justify-content: center;
}
.list-inline-end {
justify-content: flex-end;
}Навигационные меню
Ещё одна вещь, для которой я активно использую Flexbox, — это навигационные меню.
Часто для этого хватает класса .list-inline. Но для меню, подобного тому, что находится в верхней части моего сайта, я создаю отдельный класс, чтобы контролировать отношения между логотипом и элементами навигации.
В данном случае используется класс .nav-list вместе с классом .list-inline.
<nav class="nav-list">
<a href="/">Go Make Things</a>
<ul class="list-inline">
<li><a href="/about">About</a></li>
<li><a href="/articles">Daily Tips</a></li>
<li><a href="/resources">Resources</a></li>
</ul>
</nav>У нас уже есть .list-inline. Давайте теперь создадим стиль .nav-list.
Для этого макета часто используется свойство justify-content: space-between, чтобы сдвинуть логотип на одну сторону, а элементы навигации — на другую.
.nav-list {
display: flex;
justify-content: space-between;
}