Демо
  • 12,07 КБ
  • HTML, CSS
  • Меню
  • вертикальное, выпадающее
  • Лицензия MIT
HTML
<div class="container">
    <ul>
        <li class="dropdown">
            <input type="checkbox" />
            <a href="#" data-toggle="dropdown">Первое</a>
            <ul class="dropdown-menu">
                <li><a href="#">Главная</a></li>
                <li><a href="#">О нас</a></li>
                <li><a href="#">Услуги</a></li>
                <li><a href="#">Контакты</a></li>
            </ul>
        </li>
        <li class="dropdown">
            <input type="checkbox" />
            <a href="#" data-toggle="dropdown">Второе</a>
            <ul class="dropdown-menu">
                <li><a href="#">Главная</a></li>
                <li><a href="#">О нас</a></li>
                <li><a href="#">Услуги</a></li>
                <li><a href="#">Контакты</a></li>
            </ul>
        </li>
        <li class="dropdown">
            <input type="checkbox" />
            <a href="#" data-toggle="dropdown">Третье</a>
            <ul class="dropdown-menu">
                <li><a href="#">Главная</a></li>
                <li><a href="#">О нас</a></li>
                <li><a href="#">Услуги</a></li>
                <li><a href="#">Контакты</a></li>
            </ul>
        </li>
    </ul>
</div>
CSS
@import url("https://fonts.googleapis.com/css?family=Lato:300,400,700,900");
body {
    font-family: "Lato", Helvetica, Arial;
    font-size: 16px;
}
.container {
    min-width: 350px;
}
.container > ul {
    list-style: none;
    padding: 0;
    margin: 0;
}
.dropdown {
    position: relative;
}
.dropdown a {
    text-decoration: none;
}
.dropdown [data-toggle="dropdown"] {
    display: block;
    color: white;
    background: #c0392b;
    -moz-box-shadow: 0 1px 0 #d65548 inset, 0 -1px 0 #962d22 inset;
    -webkit-box-shadow: 0 1px 0 #d65548 inset, 0 -1px 0 #962d22 inset;
    box-shadow: 0 1px 0 #d65548 inset, 0 -1px 0 #962d22 inset;
    text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.3);
    padding: 10px;
}
.dropdown [data-toggle="dropdown"]:hover {
    background: #cd3d2e;
}
.dropdown [data-toggle="dropdown"]:before {
    position: absolute;
    display: block;
    content: "\25BC";
    font-size: 0.7em;
    color: #fff;
    top: 13px;
    right: 10px;
    -moz-transform: rotate(0deg);
    -webkit-transform: rotate(0deg);
    -o-transform: rotate(0deg);
    transform: rotate(0deg);
    -moz-transition: -moz-transform 0.6s;
    -o-transition: -o-transform 0.6s;
    -webkit-transition: -webkit-transform 0.6s;
    transition: -webkit-transform 0.6s;
    -moz-transition: transform 0.6s, -moz-transform 0.6s;
    transition: transform 0.6s;
    transition: transform 0.6s, -webkit-transform 0.6s, -moz-transform 0.6s, -o-transform 0.6s;
}
.dropdown > .dropdown-menu {
    max-height: 0;
    overflow: hidden;
    list-style: none;
    padding: 0;
    margin: 0;
    -moz-transform: scaleY(0);
    -webkit-transform: scaleY(0);
    -o-transform: scaleY(0);
    transform: scaleY(0);
    -moz-transform-origin: 50% 0%;
    -webkit-transform-origin: 50% 0%;
    -o-transform-origin: 50% 0%;
    transform-origin: 50% 0%;
    -moz-transition: max-height 0.6s ease-out;
    -o-transition: max-height 0.6s ease-out;
    -webkit-transition: max-height 0.6s ease-out;
    transition: max-height 0.6s ease-out;
    -o-animation: hideAnimation 0.4s ease-out;
    animation: hideAnimation 0.4s ease-out;
    -moz-animation: hideAnimation 0.4s ease-out;
    -webkit-animation: hideAnimation 0.4s ease-out;
}
.dropdown > .dropdown-menu li {
    padding: 0;
}
.dropdown > .dropdown-menu li a {
    display: block;
    color: #6f6f6f;
    background: #eee;
    -moz-box-shadow: 0 1px 0 white inset, 0 -1px 0 #d5d5d5 inset;
    -webkit-box-shadow: 0 1px 0 white inset, 0 -1px 0 #d5d5d5 inset;
    box-shadow: 0 1px 0 white inset, 0 -1px 0 #d5d5d5 inset;
    text-shadow: 0 -1px 0 rgba(255, 255, 255, 0.3);
    padding: 10px 10px;
}
.dropdown > .dropdown-menu li a:hover {
    background: #f6f6f6;
}
.dropdown > input[type="checkbox"] {
    opacity: 0;
    display: block;
    position: absolute;
    top: 0;
    width: 100%;
    height: 100%;
    cursor: pointer;
}
.dropdown > input[type="checkbox"]:checked ~ .dropdown-menu {
    max-height: 9999px;
    display: block;
    -moz-transform: scaleY(1);
    -webkit-transform: scaleY(1);
    -o-transform: scaleY(1);
    transform: scaleY(1);
    -o-animation: showAnimation 0.5s ease-in-out;
    animation: showAnimation 0.5s ease-in-out;
    -moz-animation: showAnimation 0.5s ease-in-out;
    -webkit-animation: showAnimation 0.5s ease-in-out;
    -moz-transition: max-height 2s ease-in-out;
    -o-transition: max-height 2s ease-in-out;
    -webkit-transition: max-height 2s ease-in-out;
    transition: max-height 2s ease-in-out;
}
.dropdown > input[type="checkbox"]:checked + a[data-toggle="dropdown"]:before {
    -moz-transform: rotate(-180deg);
    -webkit-transform: rotate(-180deg);
    -o-transform: rotate(-180deg);
    transform: rotate(-180deg);
    -moz-transition: -moz-transform 0.6s;
    -o-transition: -o-transform 0.6s;
    -webkit-transition: -webkit-transform 0.6s;
    transition: -webkit-transform 0.6s;
    -moz-transition: transform 0.6s, -moz-transform 0.6s;
    transition: transform 0.6s;
    transition: transform 0.6s, -webkit-transform 0.6s, -moz-transform 0.6s, -o-transform 0.6s;
}

@-o-keyframes showAnimation {
    0% {
        -moz-transform: scaleY(0.1);
        -webkit-transform: scaleY(0.1);
        -o-transform: scaleY(0.1);
        transform: scaleY(0.1);
    }
    40% {
        -moz-transform: scaleY(1.04);
        -webkit-transform: scaleY(1.04);
        -o-transform: scaleY(1.04);
        transform: scaleY(1.04);
    }
    60% {
        -moz-transform: scaleY(0.98);
        -webkit-transform: scaleY(0.98);
        -o-transform: scaleY(0.98);
        transform: scaleY(0.98);
    }
    80% {
        -moz-transform: scaleY(1.04);
        -webkit-transform: scaleY(1.04);
        -o-transform: scaleY(1.04);
        transform: scaleY(1.04);
    }
    100% {
        -moz-transform: scaleY(0.98);
        -webkit-transform: scaleY(0.98);
        -o-transform: scaleY(0.98);
        transform: scaleY(0.98);
    }
    80% {
        -moz-transform: scaleY(1.02);
        -webkit-transform: scaleY(1.02);
        -o-transform: scaleY(1.02);
        transform: scaleY(1.02);
    }
    100% {
        -moz-transform: scaleY(1);
        -webkit-transform: scaleY(1);
        -o-transform: scaleY(1);
        transform: scaleY(1);
    }
}

@keyframes showAnimation {
    0% {
        -moz-transform: scaleY(0.1);
        -webkit-transform: scaleY(0.1);
        -o-transform: scaleY(0.1);
        transform: scaleY(0.1);
    }
    40% {
        -moz-transform: scaleY(1.04);
        -webkit-transform: scaleY(1.04);
        -o-transform: scaleY(1.04);
        transform: scaleY(1.04);
    }
    60% {
        -moz-transform: scaleY(0.98);
        -webkit-transform: scaleY(0.98);
        -o-transform: scaleY(0.98);
        transform: scaleY(0.98);
    }
    80% {
        -moz-transform: scaleY(1.04);
        -webkit-transform: scaleY(1.04);
        -o-transform: scaleY(1.04);
        transform: scaleY(1.04);
    }
    100% {
        -moz-transform: scaleY(0.98);
        -webkit-transform: scaleY(0.98);
        -o-transform: scaleY(0.98);
        transform: scaleY(0.98);
    }
    80% {
        -moz-transform: scaleY(1.02);
        -webkit-transform: scaleY(1.02);
        -o-transform: scaleY(1.02);
        transform: scaleY(1.02);
    }
    100% {
        -moz-transform: scaleY(1);
        -webkit-transform: scaleY(1);
        -o-transform: scaleY(1);
        transform: scaleY(1);
    }
}
@-moz-keyframes showAnimation {
    0% {
        -moz-transform: scaleY(0.1);
        -webkit-transform: scaleY(0.1);
        transform: scaleY(0.1);
    }
    40% {
        -moz-transform: scaleY(1.04);
        -webkit-transform: scaleY(1.04);
        transform: scaleY(1.04);
    }
    60% {
        -moz-transform: scaleY(0.98);
        -webkit-transform: scaleY(0.98);
        transform: scaleY(0.98);
    }
    80% {
        -moz-transform: scaleY(1.04);
        -webkit-transform: scaleY(1.04);
        transform: scaleY(1.04);
    }
    100% {
        -moz-transform: scaleY(0.98);
        -webkit-transform: scaleY(0.98);
        transform: scaleY(0.98);
    }
    80% {
        -moz-transform: scaleY(1.02);
        -webkit-transform: scaleY(1.02);
        transform: scaleY(1.02);
    }
    100% {
        -moz-transform: scaleY(1);
        -webkit-transform: scaleY(1);
        transform: scaleY(1);
    }
}
@-webkit-keyframes showAnimation {
    0% {
        -moz-transform: scaleY(0.1);
        -webkit-transform: scaleY(0.1);
        transform: scaleY(0.1);
    }
    40% {
        -moz-transform: scaleY(1.04);
        -webkit-transform: scaleY(1.04);
        transform: scaleY(1.04);
    }
    60% {
        -moz-transform: scaleY(0.98);
        -webkit-transform: scaleY(0.98);
        transform: scaleY(0.98);
    }
    80% {
        -moz-transform: scaleY(1.04);
        -webkit-transform: scaleY(1.04);
        transform: scaleY(1.04);
    }
    100% {
        -moz-transform: scaleY(0.98);
        -webkit-transform: scaleY(0.98);
        transform: scaleY(0.98);
    }
    80% {
        -moz-transform: scaleY(1.02);
        -webkit-transform: scaleY(1.02);
        transform: scaleY(1.02);
    }
    100% {
        -moz-transform: scaleY(1);
        -webkit-transform: scaleY(1);
        transform: scaleY(1);
    }
}
@-o-keyframes hideAnimation {
    0% {
        -moz-transform: scaleY(1);
        -webkit-transform: scaleY(1);
        -o-transform: scaleY(1);
        transform: scaleY(1);
    }
    60% {
        -moz-transform: scaleY(0.98);
        -webkit-transform: scaleY(0.98);
        -o-transform: scaleY(0.98);
        transform: scaleY(0.98);
    }
    80% {
        -moz-transform: scaleY(1.02);
        -webkit-transform: scaleY(1.02);
        -o-transform: scaleY(1.02);
        transform: scaleY(1.02);
    }
    100% {
        -moz-transform: scaleY(0);
        -webkit-transform: scaleY(0);
        -o-transform: scaleY(0);
        transform: scaleY(0);
    }
}
@keyframes hideAnimation {
    0% {
        -moz-transform: scaleY(1);
        -webkit-transform: scaleY(1);
        -o-transform: scaleY(1);
        transform: scaleY(1);
    }
    60% {
        -moz-transform: scaleY(0.98);
        -webkit-transform: scaleY(0.98);
        -o-transform: scaleY(0.98);
        transform: scaleY(0.98);
    }
    80% {
        -moz-transform: scaleY(1.02);
        -webkit-transform: scaleY(1.02);
        -o-transform: scaleY(1.02);
        transform: scaleY(1.02);
    }
    100% {
        -moz-transform: scaleY(0);
        -webkit-transform: scaleY(0);
        -o-transform: scaleY(0);
        transform: scaleY(0);
    }
}
@-moz-keyframes hideAnimation {
    0% {
        -moz-transform: scaleY(1);
        -webkit-transform: scaleY(1);
        transform: scaleY(1);
    }
    60% {
        -moz-transform: scaleY(0.98);
        -webkit-transform: scaleY(0.98);
        transform: scaleY(0.98);
    }
    80% {
        -moz-transform: scaleY(1.02);
        -webkit-transform: scaleY(1.02);
        transform: scaleY(1.02);
    }
    100% {
        -moz-transform: scaleY(0);
        -webkit-transform: scaleY(0);
        transform: scaleY(0);
    }
}
@-webkit-keyframes hideAnimation {
    0% {
        -moz-transform: scaleY(1);
        -webkit-transform: scaleY(1);
        transform: scaleY(1);
    }
    60% {
        -moz-transform: scaleY(0.98);
        -webkit-transform: scaleY(0.98);
        transform: scaleY(0.98);
    }
    80% {
        -moz-transform: scaleY(1.02);
        -webkit-transform: scaleY(1.02);
        transform: scaleY(1.02);
    }
    100% {
        -moz-transform: scaleY(0);
        -webkit-transform: scaleY(0);
        transform: scaleY(0);
    }
}

Приведенный код занимается созданием изящного и интерактивного выпадающего меню с помощью HTML и CSS, что идеально подходит для добавления изысканного штриха на любой сайт. Представьте, что у вас на сайте есть вертикальное меню, и вы хотите сделать его более динамичным, позволяя пользователям кликать и видеть больше опций, не покидая страницу. Вот где начинается магия!

В сердцевине этой структуры лежат элементы <div> и <ul>, организованные таким образом, чтобы удерживать наши пункты меню. Каждый элемент в этом вертикальном меню обернут в тег <li> с классом .dropdown, что указывает на то, что есть что-то еще, что можно увидеть. Настоящий козырь заключается в использовании скрытого трюка с флажком в сочетании с меткой (стилизованной под кликабельную область), чтобы переключать видимость вложенных пунктов меню. Это умное использование базовых элементов HTML создает удобный пользовательский опыт работы с выпадающим меню без необходимости сложного JavaScript.

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

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