Создание анимированного меню бургер на чистом CSS и JavaScript

Создание анимированного меню бургер на чистом CSS и JavaScript
Пошаговое руководство по созданию стильного анимированного меню-бургера с плавными переходами и кроссбраузерной поддержкой

Введение

Меню-бургер стало неотъемлемой частью современного веб-дизайна, особенно для мобильных версий сайтов. Создание анимированного меню-бургера не только улучшает пользовательский опыт, но и добавляет сайту профессиональный вид. Рассмотрим, как создать стильное анимированное меню-бургер с плавными переходами.

HTML структура


<div class="burger-menu">
    <div class="burger-icon">
        <span></span>
        <span></span>
        <span></span>
    </div>
    <nav class="menu">
        <ul>
            <li><a href="#">Главная</a></li>
            <li><a href="#">О нас</a></li>
            <li><a href="#">Услуги</a></li>
            <li><a href="#">Контакты</a></li>
        </ul>
    </nav>
</div>

CSS стили


.burger-menu {
    position: relative;
    width: 40px;
    height: 40px;
    cursor: pointer;
}

.burger-icon {
    position: relative;
    width: 100%;
    height: 100%;
}

.burger-icon span {
    position: absolute;
    width: 100%;
    height: 2px;
    background-color: #333;
    transition: all 0.3s ease-in-out;
}

.burger-icon span:nth-child(1) {
    top: 10px;
}

.burger-icon span:nth-child(2) {
    top: 50%;
    transform: translateY(-50%);
}

.burger-icon span:nth-child(3) {
    bottom: 10px;
}

.burger-menu.active .burger-icon span:nth-child(1) {
    transform: rotate(45deg) translate(8px, 8px);
}

.burger-menu.active .burger-icon span:nth-child(2) {
    opacity: 0;
}

.burger-menu.active .burger-icon span:nth-child(3) {
    transform: rotate(-45deg) translate(8px, -8px);
}

.menu {
    position: absolute;
    top: 100%;
    right: 0;
    background: #fff;
    padding: 20px;
    box-shadow: 0 0 10px rgba(0,0,0,0.1);
    opacity: 0;
    visibility: hidden;
    transform: translateY(-20px);
    transition: all 0.3s ease-in-out;
}

.burger-menu.active .menu {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
}

JavaScript код


document.querySelector('.burger-menu').addEventListener('click', function() {
    this.classList.toggle('active');
});

Объяснение кода

Наше меню-бургер состоит из трех основных компонентов:

HTML структура создает три полоски бургера с помощью span-элементов и контейнер для меню навигации.

CSS стили обеспечивают:

    • Позиционирование элементов
    • Базовый вид трех полосок
    • Анимацию трансформации полосок в крестик
    • Плавное появление меню
    • Переходные эффекты

    JavaScript добавляет класс active при клике, запуская анимацию.

      Ключевые моменты анимации:

      • Использование transform для вращения полосок
      • Применение transition для плавности
      • Работа с opacity для второй полоски
      • Анимация появления меню через transform и opacity

      Заключение

      Создание анимированного меню-бургера – это отличный пример того, как можно улучшить пользовательский интерфейс с помощью простых CSS-анимаций. Такое меню не только функционально, но и привлекательно визуально. При необходимости его можно легко кастомизировать, меняя цвета, размеры и скорость анимации под конкретный проект.

      Понравилась запись? Оцените!
      Оценок: 0 Среднее: 0
      Telegram
      WhatsApp
      VK
      Facebook
      Email

      Добавить комментарий

      Ваш адрес email не будет опубликован. Обязательные поля помечены *

      Рекомендуем