Навигационные меню: горизонтальное, вертикальное, выпадающее, адаптивное

Основы навигационных меню в CSS 🧭

Навигационные меню — это "дорожные знаки" вашего сайта. Они помогают пользователям перемещаться между страницами и находить нужную информацию. Рассмотрим четыре основных типа меню, которые должен знать каждый фронтенд-разработчик.


Горизонтальное меню ↔️

Самый распространённый тип, который обычно размещается в шапке сайта. Создаётся через display: flex или display: inline-block.

.nav-horizontal {
  display: flex;
  gap: 20px;
  background: #2c3e50;
  padding: 15px;
}

.nav-horizontal a {
  color: white;
  text-decoration: none;
  font-weight: bold;
  transition: color 0.3s;
}

.nav-horizontal a:hover {
  color: #3498db;
}

💡 Совет: Используйте gap вместо margin для равномерных отступов между пунктами — это современный и чистый способ.


Вертикальное меню ↕️

Идеально для сайдбаров или мобильных меню. Основное отличие — направление flex-контейнера.

.nav-vertical {
  display: flex;
  flex-direction: column;
  width: 200px;
  background: #f8f9fa;
  padding: 10px 0;
}

.nav-vertical a {
  padding: 10px 15px;
  color: #333;
  border-bottom: 1px solid #ddd;
}

.nav-vertical a:last-child {
  border-bottom: none;
}

🔥 Лайфхак: Добавьте position: sticky; top: 0; к вертикальному меню, чтобы оно оставалось на экране при прокрутке.


Выпадающее меню 🎯

Создадим простое выпадающее меню с помощью псевдокласса :hover. Для более сложных сценариев лучше использовать JavaScript.

.dropdown {
  position: relative;
  display: inline-block;
}

.dropdown-content {
  display: none;
  position: absolute;
  background: white;
  min-width: 160px;
  box-shadow: 0 8px 16px rgba(0,0,0,0.1);
  z-index: 1;
}

.dropdown:hover .dropdown-content {
  display: block;
}

.dropdown-content a {
  display: block;
  padding: 12px 16px;
  color: #333;
}

.dropdown-content a:hover {
  background: #f1f1f1;
}

⚠️ Важно: Всегда проверяйте доступность выпадающих меню для пользователей с ограниченными возможностями.


Адаптивное меню 📱

Современный must-have! Используем медиа-запросы для переключения между горизонтальным и мобильным (часто "бургер") меню.

/* Десктопная версия */
.nav-main {
  display: flex;
  justify-content: space-between;
}

/* Мобильная версия */
@media (max-width: 768px) {
  .nav-main {
    flex-direction: column;
    display: none; /* Скрываем по умолчанию */
  }

  /* Стили для бургер-кнопки */
  .menu-toggle {
    display: block;
    background: #333;
    color: white;
    padding: 15px;
    cursor: pointer;
  }

  /* Показываем меню при активации */
  .nav-main.active {
    display: flex;
  }
}

🌟 Профессиональный подход: Для сложных адаптивных меню рассмотрите CSS Grid или библиотеки типа Bootstrap.


Лучшие практики для всех типов меню 🏆

  1. Доступность: Используйте семантические теги <nav> и ARIA-атрибуты
  2. Консистентность: Соблюдайте единый стиль для всех пунктов
  3. Интерактивность: Добавляйте визуальный feedback при наведении
  4. Производительность: Оптимизируйте для быстрой загрузки
  5. Тестирование: Проверяйте на разных устройствах и браузерах
/* Пример доступного меню */
nav[aria-label="Main"] {
  font-family: 'Arial', sans-serif;
}

nav ul li:focus-within {
  outline: 2px solid #3498db;
}

Готовый пример: Комбинированное меню

Создадим меню, которое:

  • Горизонтальное на десктопе
  • Превращается в "бургер" на мобильных
  • Имеет выпадающие подменю
/* Основные стили */
.nav-combo {
  display: flex;
  justify-content: space-between;
  background: #34495e;
  padding: 0 20px;
}

/* Выпадающее подменю */
.has-dropdown {
  position: relative;
}

.submenu {
  position: absolute;
  display: none;
  background: white;
  width: 200px;
}

.has-dropdown:hover .submenu {
  display: block;
}

/* Адаптивность */
@media (max-width: 768px) {
  .nav-combo {
    flex-direction: column;
    display: none;
  }

  .nav-combo.active {
    display: flex;
  }

  .submenu {
    position: static;
    width: auto;
  }
}

🎨 Совет от Данилы Бежина: "Всегда проектируйте меню с учётом контента — оно должно решать задачи пользователей, а не просто красиво выглядеть."


Теперь у вас есть все инструменты для создания профессиональных навигационных меню. Экспериментируйте, тестируйте разные подходы и помните — хорошая навигация делает сайт удобным, а значит, успешным!

Скрыть рекламу навсегда

🧠 Учёба без воды и зубрёжки

Закрытый Boosty с наработками опытного преподавателя.

Объясняю сложное так, чтобы щелкнуло.

🚀 Забрать доступ к Boosty