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: auto
  • margin: auto вместо margin-left: auto — оба работают, но margin: auto также убирает вертикальные отступы
  • Отсутствие :focus-visible на ссылках — навигация должна быть доступна с клавиатуры

Связанные темы

Ресурсы