Демо
  • 6,21 КБ
  • CSS, HTML
  • Меню
  • анимация, вертикальное, гамбургер, мобильное
  • Лицензия MIT
HTML
<section class="top-nav-menu-1">
    <div>
        Логотип
    </div>
    <input id="menu-1-toggle" type="checkbox" />
    <label class="menu-1-button-container" for="menu-1-toggle">
        <div class="menu-1-button"></div>
    </label>
    <ul class="menu-1">
        <li>Раз</li>
        <li>Два</li>
        <li>Три</li>
        <li>Четыре</li>
        <li>Пять</li>
    </ul>
</section>
CSS
.top-nav-menu-1 {
    display: -webkit-box;
    display: -webkit-flex;
    display: -moz-box;
    display: flex;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
    -webkit-flex-direction: row;
    -moz-box-orient: horizontal;
    -moz-box-direction: normal;
    flex-direction: row;
    -webkit-box-align: center;
    -webkit-align-items: center;
    -moz-box-align: center;
    align-items: center;
    -webkit-box-pack: justify;
    -webkit-justify-content: space-between;
    -moz-box-pack: justify;
    justify-content: space-between;
    background: -webkit-gradient(linear, right top, left top, from(#f46b45), to(#eea849));
    background: -webkit-linear-gradient(right, #f46b45, #eea849);
    background: -moz-linear-gradient(right, #f46b45, #eea849);
    background: -o-linear-gradient(right, #f46b45, #eea849);
    background: linear-gradient(to left, #f46b45, #eea849);
    color: #fff;
    height: 17px;
    padding: 1em;
    border: 1px solid #333;
    position: relative;
    width: 140px;
}

.menu-1 {
    display: -webkit-box;
    display: -webkit-flex;
    display: -moz-box;
    display: flex;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
    -webkit-flex-direction: row;
    -moz-box-orient: horizontal;
    -moz-box-direction: normal;
    flex-direction: row;
    list-style-type: none;
    margin: 0;
    padding: 0;
}

.menu-1 > li {
    margin: 0 1rem;
    overflow: hidden;
}

.menu-1-button-container {
    display: none;
    height: 100%;
    width: 30px;
    cursor: pointer;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
    -webkit-flex-direction: column;
    -moz-box-orient: vertical;
    -moz-box-direction: normal;
    flex-direction: column;
    -webkit-box-pack: center;
    -webkit-justify-content: center;
    -moz-box-pack: center;
    justify-content: center;
    -webkit-box-align: center;
    -webkit-align-items: center;
    -moz-box-align: center;
    align-items: center;
}

#menu-1-toggle {
    display: none;
}

.menu-1-button,
.menu-1-button::before,
.menu-1-button::after {
    display: block;
    background-color: #fff;
    position: absolute;
    height: 4px;
    width: 30px;
    -webkit-transition: -webkit-transform 400ms cubic-bezier(0.23, 1, 0.32, 1);
    transition: -webkit-transform 400ms cubic-bezier(0.23, 1, 0.32, 1);
    -o-transition: -o-transform 400ms cubic-bezier(0.23, 1, 0.32, 1);
    -moz-transition: transform 400ms cubic-bezier(0.23, 1, 0.32, 1), -moz-transform 400ms cubic-bezier(0.23, 1, 0.32, 1);
    transition: transform 400ms cubic-bezier(0.23, 1, 0.32, 1);
    transition: transform 400ms cubic-bezier(0.23, 1, 0.32, 1), -webkit-transform 400ms cubic-bezier(0.23, 1, 0.32, 1), -moz-transform 400ms cubic-bezier(0.23, 1, 0.32, 1), -o-transform 400ms cubic-bezier(0.23, 1, 0.32, 1);
    -webkit-border-radius: 2px;
    -moz-border-radius: 2px;
    border-radius: 2px;
}

.menu-1-button::before {
    content: "";
    margin-top: -8px;
}

.menu-1-button::after {
    content: "";
    margin-top: 8px;
}

#menu-1-toggle:checked + .menu-1-button-container .menu-1-button::before {
    margin-top: 0px;
    -webkit-transform: rotate(405deg);
    -moz-transform: rotate(405deg);
    -o-transform: rotate(405deg);
    transform: rotate(405deg);
}

#menu-1-toggle:checked + .menu-1-button-container .menu-1-button {
    background: rgba(255, 255, 255, 0);
}

#menu-1-toggle:checked + .menu-1-button-container .menu-1-button::after {
    margin-top: 0px;
    -webkit-transform: rotate(-405deg);
    -moz-transform: rotate(-405deg);
    -o-transform: rotate(-405deg);
    transform: rotate(-405deg);
}

@media (max-width: 10000px) {
    .menu-1-button-container {
        display: -webkit-box;
        display: -webkit-flex;
        display: -moz-box;
        display: flex;
    }

    .menu-1 {
        position: absolute;
        top: 0;
        margin-top: 50px;
        left: 0;
        -webkit-box-orient: vertical;
        -webkit-box-direction: normal;
        -webkit-flex-direction: column;
        -moz-box-orient: vertical;
        -moz-box-direction: normal;
        flex-direction: column;
        width: 100%;
        -webkit-box-pack: center;
        -webkit-justify-content: center;
        -moz-box-pack: center;
        justify-content: center;
        -webkit-box-align: center;
        -webkit-align-items: center;
        -moz-box-align: center;
        align-items: center;
    }

    #menu-1-toggle ~ .menu-1 li {
        height: 0;
        margin: 0;
        padding: 0;
        border: 0;
        -webkit-transition: height 400ms cubic-bezier(0.23, 1, 0.32, 1);
        -o-transition: height 400ms cubic-bezier(0.23, 1, 0.32, 1);
        -moz-transition: height 400ms cubic-bezier(0.23, 1, 0.32, 1);
        transition: height 400ms cubic-bezier(0.23, 1, 0.32, 1);
    }

    #menu-1-toggle:checked ~ .menu-1 li {
        border: 1px solid #333;
        height: 2.5em;
        padding: 0.5em 0;
        -webkit-transition: height 400ms cubic-bezier(0.23, 1, 0.32, 1);
        -o-transition: height 400ms cubic-bezier(0.23, 1, 0.32, 1);
        -moz-transition: height 400ms cubic-bezier(0.23, 1, 0.32, 1);
        transition: height 400ms cubic-bezier(0.23, 1, 0.32, 1);
    }

    .menu-1 > li {
        display: -webkit-box;
        display: -webkit-flex;
        display: -moz-box;
        display: flex;
        -webkit-box-pack: center;
        -webkit-justify-content: center;
        -moz-box-pack: center;
        justify-content: center;
        margin: 0;
        padding: 0.5em 0;
        width: 100%;
        color: white;
        background-color: #222;
    }

    .menu-1 > li:not(:last-child) {
        border-bottom: 1px solid #444;
    }
}

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

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

Для достижения такого эффекта код использует сочетание HTML для структурирования, CSS для стилизации и небольшое количество CSS-анимаций для создания эффекта плавного перехода. Особое внимание уделяется использованию CSS-селекторов для изменения внешнего вида в зависимости от состояния чекбокса (выбрано или нет), а также применению медиазапросов для обеспечения адекватного поведения меню на различных размерах экранов, что делает сайт привлекательным на любом устройстве.

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

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