Отправка сообщения






Мобильное меню для сайта на CSS

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

Html-cтруктура меню:

<input type="checkbox" id="hmt" class="hidden-menu-ticker">
<label class="btn-menu" for="hmt">
    <span class="first"></span>
    <span class="second"></span>
    <span class="third"></span>
</label>
<ul class="hidden-menu">
    <li><a href="">Главная</a></li>  
    <li><a href="">О компании</a></li>
    <li><a href="">Услуги</a></li> 
    <li><a href="">Контакты</a></li>  
</ul>

Сама структура добавляется в тело страницы между тегами body и состоит из простых элементов. Первый элемент input[type=checkbox] – элемент который будет хранить состояние меню – открыто/закрыто. Визуально элемент будет скрыть через CSS.
Далее следует элемент label.btn-menu который выполняет роль самой кнопки. Вложенные элементы span участвуют в визуализации открытия/закрытия меню.
Само меню располагается непосредственно в элементе ul.hidden-menu, по сути это обычный список который содержит ссылки. Далее рассмотрим CSS-код:

Скрываем чекбокс:

.hidden-menu-ticker {
    display: none;
}

Стилизация кнопки открытия меню:

.btn-menu {
    color: #fff;
    border:1px solid #222;
    padding: 5px;
    position: fixed;
    top: 5px;
    left: 5px;
    cursor: pointer;
    transition: left .23s;
    z-index: 3;
    width: 25px;
    -webkit-transform: translateZ(0);
    -webkit-backface-visibility: hidden;
    -webkit-border-radius: 2px;
    -moz-border-radius: 2px;
    border-radius: 2px;
}

.btn-menu span {
    display: block;
    height: 5px;
    background-color: #222;
    margin: 5px 0 0;
    transition: all .1s linear .23s;
    position: relative;
}

.btn-menu span.first {
    margin-top: 0;
}

Стилизация пунктов меню:

.hidden-menu {
    display: block;
    position: fixed;
    list-style:none;
    padding: 50px 10px 10px;
    margin: 0;
    box-sizing: border-box;
    width: 200px;
    background-color: #fdf7f7;
    height: 100%;
    top: 0;
    left: -200px;
    transition: left .2s;
    z-index: 2;
    -webkit-transform: translateZ(0);
    -webkit-backface-visibility: hidden;
}

.hidden-menu li {
    padding:10px 0;
}

.hidden-menu li a {
    font-size:15px;
    color:#000;
    padding:6px 0px;
}

Стилизовать меню вы можете по-своему, основное действие — это открытие блока с меню. Меню открывается посредством возможности проверки состояния чекбокса и комбинации стилей.

Стили для работы меню:

.hidden-menu-ticker:checked ~ .btn-menu {
    left: 160px;
}
.hidden-menu-ticker:checked ~ .hidden-menu {
    left: 0;
}
.hidden-menu-ticker:checked ~ .btn-menu span.first {
    -webkit-transform: rotate(45deg);
    top: 10px;
}
.hidden-menu-ticker:checked ~ .btn-menu span.second {
    opacity: 0;
}
.hidden-menu-ticker:checked ~ .btn-menu span.third {
    -webkit-transform: rotate(-45deg);
    top: -10px;
}

В конечном итоге мы получаем элементарный механизм работы. Через элемент label мы воздействуем на input[type=checkbox], активируя его либо деактивируя. В то же время используя возможности CSS3, мы проверяем состояние того самого чекбокса, если он активирован, воздействуем на классы меню и кнопки открытия. По сути происходит простая анимация вращения элементов span в самой кнопки открытия, и изменение позиционирования самого блока меню.
Пример работы меню.

Опубликован: 26.03.2020 г.
 
нравится (Пока оценок нет)
Загрузка...

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

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

Комментарии

  • Загрузка...

Наверх