Демо
  • 3,51 КБ
  • HTML, CSS, JS
  • Меню
  • анимация, гамбургер, скользящее
  • Лицензия MIT
HTML
<nav id="burger-menu">
    <div class="burger">
        <div class="burger-line burger-line-1"></div>
        <div class="burger-line burger-line-2"></div>
        <div class="burger-line burger-line-3"></div>
    </div>
    <div class="moduletable_menu">
        <ul class="nav menu">
            <li><a href="#">Главная</a></li>
            <li><a href="#">Блог</a></li>
            <li><a href="#">Контакты</a></li>
        </ul>
    </div>
</nav>
CSS
#burger-menu a {
    color: #fff;
    text-decoration: none;
}
#burger-menu li {
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
    display: block;
}
#burger-menu {
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
    font-family: Arial;
    z-index: 2;
    position: fixed;
    left: -400px;
    width: 400px;
    top: 0;
    bottom: 0;
    margin: 0;
    border: none;
    -webkit-border-radius: 0;
    -moz-border-radius: 0;
    border-radius: 0;
    -webkit-transition: 1s;
    -o-transition: 1s;
    -moz-transition: 1s;
    transition: 1s;
}
#burger-menu.active {
    background-color: rgba(0, 0, 0, 0.75);
    left: 0;
}
#burger-menu .menu {
    margin-top: 40px;
}
.burger {
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
    height: 35px;
    width: 30px;
    padding: 0 5px;
    position: absolute;
    right: -40px;
    top: 0;
    cursor: pointer;
    z-index: 3;
}
.burger-line {
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
    height: 3px;
    background-color: rgba(255, 255, 255, 0.75);
    position: absolute;
}
.burger-line-1 {
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
    -webkit-transform: rotate(0deg);
    -moz-transform: rotate(0deg);
    -o-transform: rotate(0deg);
    transform: rotate(0deg);
    width: 30px;
    top: 5px;
}
.burger-line-2 {
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
    top: 15px;
    width: 30px;
    left: 5px;
}
.burger-line-3 {
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
    -webkit-transform: rotate(0deg);
    -moz-transform: rotate(0deg);
    -o-transform: rotate(0deg);
    transform: rotate(0deg);
    width: 30px;
    top: 25px;
}
.active .burger-line-1 {
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
    -webkit-transform: rotate(-45deg);
    -moz-transform: rotate(-45deg);
    -o-transform: rotate(-45deg);
    transform: rotate(-45deg);
    width: 15px;
    top: 11px;
}
.active .burger-line-2 {
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
    top: 15px;
    width: 0px;
    left: 9px;
}
.active .burger-line-3 {
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
    -webkit-transform: rotate(45deg);
    -moz-transform: rotate(45deg);
    -o-transform: rotate(45deg);
    transform: rotate(45deg);
    width: 15px;
    top: 20px;
}
JS
const burgerMenu = document.querySelector("#burger-menu");
const burger = document.querySelector(".burger");
burger.addEventListener("click", toggleBurger);

function toggleBurger() {
    this.classList.toggle("active");
    burgerMenu.classList.toggle("active");
}

Фрагмент кода, который мы рассматриваем, создан для оживления меню-бургера на веб-странице. Давайте разберем его на понятные части. Этот код словно магический трюк, превращающий статичную страницу в интерактивное и веселое место.

Сначала HTML залогирует основу. Представьте, что вы устраиваете сцену для пьесы. Здесь сцена — это панель навигации <nav>, в которой расположен знаковый иконка-бургер из трех линий .burger-line. Как реквизит на сцене, эти линии уютно расположены внутри <div>, который представляет собой иконку бургера. Другой <div> действует как скрытый люк, открывающий меню, когда происходит магия (или, в данном случае, анимация).

Переходя к CSS, здесь наш костюм и дизайн сцены приходят в игру. CSS стилизует панель навигации и иконку-бургер, придавая им определенный вид. Например, когда меню не активно, это как если бы наш актер ожидал в кулисах, расположенный вне экрана с left: -400px;. Но как только меню становится активным, магия CSS-переходов выносит его на передний план, плавно скользя в поле зрения с анимацией, напоминающей подъем занавеса на шоу.

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

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

  •  Меню №114
    Меню №23
    Меню №23
    • HTML, CSS, JS
    • 9,87 КБ
    • Вертикальное
    Подробнее
  •  Меню №115
    Меню №22
    Меню №22
    • HTML, CSS
    • 6,33 КБ
    • Вертикальное, выпадающее
    Подробнее
  •  Меню №115
    Меню №21
    Меню №21
    • HTML, CSS
    • 1,64 КБ
    • Вертикальное, сайдбар, скользящее
    Подробнее
  •  Меню №114
    Меню №20
    Меню №20
    • HTML, CSS
    • 5,06 КБ
    • Вертикальное, скользящее
    Подробнее
  •  Меню №114
    Меню №19
    Меню №19
    • HTML, CSS
    • 8,21 КБ
    • Вертикальное, гамбургер, скользящее
    Подробнее
  •  Меню №114.5
    Меню №18
    Меню №18
    • HTML, CSS
    • 2,94 КБ
    • Вертикальное
    Подробнее
Меню