Flexbox: навигационная панель
Навигационная панель на Flexbox — горизонтальный ряд с логотипом, ссылками и кнопками, выровненными по оси с помощью
justify-contentиmargin: auto.
Зачем нужно
Navbar — один из первых компонентов любого сайта. Flexbox идеален: одна строка display: flex + align-items: center даёт вертикальное центрирование всех элементов, margin-left: auto прижимает кнопки вправо без лишней разметки.
Где используется
- Сайты любого типа (лендинги, приложения, документация)
- Мобильное гамбургер-меню
- Sidebar-навигация
- Табы и breadcrumbs
Основной контент
Базовый navbar
.nav {
display: flex;
align-items: center;
gap: 8px;
padding: 0 24px;
height: 64px;
background: white;
border-bottom: 1px solid #e0e0e0;
}
.nav__logo {
font-size: 1.25rem;
font-weight: bold;
text-decoration: none;
color: inherit;
}
.nav__links {
display: flex;
gap: 4px;
list-style: none;
margin: 0;
padding: 0;
}
.nav__link {
padding: 6px 12px;
border-radius: 6px;
text-decoration: none;
color: #555;
transition: background 0.2s;
}
.nav__link:hover {
background: #f0f0f0;
color: #111;
}
/* Прижать actions вправо */
.nav__actions {
display: flex;
gap: 8px;
margin-left: auto;
}
<nav class="nav">
<a class="nav__logo" href="/">Logo</a>
<ul class="nav__links">
<li><a class="nav__link" href="/about">About</a></li>
<li><a class="nav__link" href="/pricing">Pricing</a></li>
<li><a class="nav__link" href="/blog">Blog</a></li>
</ul>
<div class="nav__actions">
<a class="btn btn--ghost" href="/login">Login</a>
<a class="btn btn--primary" href="/signup">Sign up</a>
</div>
</nav>
Адаптивный navbar
.nav__toggle {
display: none;
background: none;
border: none;
cursor: pointer;
padding: 8px;
}
@media (max-width: 768px) {
.nav__toggle {
display: block;
margin-left: auto;
}
.nav__links {
display: none;
position: absolute;
top: 64px;
left: 0;
right: 0;
background: white;
flex-direction: column;
padding: 16px;
border-bottom: 1px solid #e0e0e0;
}
.nav__links.open() {
display: flex;
}
}
Вертикальный sidebar nav
.sidebar-nav {
display: flex;
flex-direction: column;
gap: 4px;
padding: 16px;
width: 240px;
}
.sidebar-nav__item {
display: flex;
align-items: center;
gap: 10px;
padding: 8px 12px;
border-radius: 6px;
text-decoration: none;
color: #555;
}
.sidebar-nav__item.active {
background: #e8f0fe;
color: #0070f3;
font-weight: 500;
}
Частые ошибки
float: rightв flex-контейнере — float игнорируется в flex-элементах; используйтеmargin-left: automargin: autoвместоmargin-left: auto— оба работают, ноmargin: autoтакже убирает вертикальные отступы- Отсутствие
:focus-visibleна ссылках — навигация должна быть доступна с клавиатуры