Меню №6
- 3,96 КБ
- HTML, CSS
- Меню
- анимация, гамбургер, мобильное
- Лицензия MIT
<input id="test" type="checkbox" />
<label for="test">
<svg class="burger" width="86" height="60" viewbox="0 0 150 150">
<g stroke-width="12">
<line x1="6" y1="6" x2="80" y2="6"></line>
<line x1="6" y1="28" x2="80" y2="28"></line>
<line x1="6" y1="50" x2="80" y2="50"></line>
</g>
</svg>
<svg class="close" width="86" height="60" viewbox="0 0 150 150">
<g stroke-width="12">
<line x1="42" y1="6" x2="42" y2="80"></line>
<line x1="6" y1="42" x2="80" y2="42"></line>
</g>
</svg>
</label>
<div class="menu">
<div>Главная</div>
<div>О нас</div>
<div>Привет</div>
<div>Контакты</div>
</div>
<span class="main">
<span>Меню на чистом CSS</span>
</span>
label {
position: absolute;
z-index: 1;
}
input {
display: none;
}
input:checked ~ label {
right: 0;
}
.burger {
position: fixed;
top: 2rem;
left: 2rem;
cursor: pointer;
}
.burger g {
stroke: #ffffff;
-webkit-transition: stroke 0.25s ease-in-out;
-o-transition: stroke 0.25s ease-in-out;
-moz-transition: stroke 0.25s ease-in-out;
transition: stroke 0.25s ease-in-out;
}
.burger g:hover {
stroke: #cccccc;
}
input:checked ~ label .burger {
opacity: 0;
}
.close {
position: fixed;
top: 2rem;
left: 2rem;
cursor: pointer;
opacity: 0;
}
.close g:hover {
stroke: #cccccc;
}
.close g {
stroke: #ffffff;
-webkit-transition: stroke 0.25s ease-in-out;
-o-transition: stroke 0.25s ease-in-out;
-moz-transition: stroke 0.25s ease-in-out;
transition: stroke 0.25s ease-in-out;
}
.close line {
-webkit-transform-origin: 0%;
-moz-transform-origin: 0%;
-o-transform-origin: 0%;
transform-origin: 0%;
}
.close g {
-webkit-transform: rotateZ(45deg);
-moz-transform: rotateZ(45deg);
-o-transform: rotateZ(45deg);
transform: rotateZ(45deg);
-webkit-transform-origin: 50%;
-moz-transform-origin: 50%;
-o-transform-origin: 50%;
transform-origin: 50%;
}
input:checked ~ label .close {
opacity: 1;
}
.menu {
display: -webkit-box;
display: -webkit-flex;
display: -moz-box;
display: flex;
-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-align: center;
-webkit-align-items: center;
-moz-box-align: center;
align-items: center;
-webkit-justify-content: space-around;
justify-content: space-around;
position: absolute;
opacity: 0;
width: 100vw;
height: 100vh;
background-color: tomato;
-webkit-transition: opacity 0.8s cubic-bezier(0.175, 0.885, 0.32, 1.275);
-o-transition: opacity 0.8s cubic-bezier(0.175, 0.885, 0.32, 1.275);
-moz-transition: opacity 0.8s cubic-bezier(0.175, 0.885, 0.32, 1.275);
transition: opacity 0.8s cubic-bezier(0.175, 0.885, 0.32, 1.275);
color: #ffffff;
text-transform: uppercase;
font-size: 24px;
font-weight: bold;
font-family: Arial, Helvetica, sans-serif;
}
input:checked ~ .menu {
opacity: 1;
}
.menu div {
margin-top: 50px;
-webkit-transition: margin 0.8s cubic-bezier(0.175, 0.885, 0.32, 1.275);
-o-transition: margin 0.8s cubic-bezier(0.175, 0.885, 0.32, 1.275);
-moz-transition: margin 0.8s cubic-bezier(0.175, 0.885, 0.32, 1.275);
transition: margin 0.8s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}
input:checked ~ .menu div {
margin-top: 0px;
}
.main {
display: -webkit-box;
display: -webkit-flex;
display: -moz-box;
display: flex;
width: 100vw;
height: 100vh;
}
.main span {
margin: auto;
font-size: 40px;
color: #ffffff;
font-family: "Pacifico", cursive;
}
Код, который мы рассматриваем, направлен на создание стильного и удобного интерфейса навигации для маленьких экранов, таких как экраны смартфонов или планшетов. Представьте, что вы просматриваете свой любимый сайт на телефоне и нажимаете на маленький значок, который выглядит как три уложенные друг на друга линии, часто называемый меню-гамбургером. Именно это и предназначено делать этот код: он переключает мобильное меню с аккуратной анимацией.
В основе этой настройки лежит умное использование HTML и CSS для создания иконки меню-гамбургера, которая превращается в иконку закрытия (X), когда меню активировано. Это преобразование направлено на визуальную обратную связь и убеждение пользователя в том, что он успешно открыл меню. С помощью всего нескольких строк HTML у нас есть чекбокс, который работает как скрытый переключатель, контролирующий отображение или скрытие меню, вместе с графикой SVG для иконок гамбургера и закрытия. Этот трюк с чекбоксом — чистая магия CSS, устраняющая необходимость в JavaScript для управления состоянием меню.
CSS выходит на сцену, чтобы стилизовать и анимировать наше меню и иконки. Когда нажимается иконка гамбургера (то есть чекбокс отмечен), правила CSS преобразуют ее, плавно убирая и показывая иконку закрытия с плавной анимацией вращения. Этот визуальный сигнал крайне важен — он сообщает вам о том, что вы начали действие и меню отреагировало, открывшись. В то же время мобильное меню появляется на экране или появляется с анимацией, в зависимости от его стилизации, делая доступными опции вроде «Главная», «О сайте» и т.д. Вся эта последовательность анимаций не только выглядит круто, но и интуитивно понятна, повышая общий пользовательский опыт.
Наконец, магия CSS не останавливается на показе и скрытии элементов. Она заходит еще дальше, стилизуя контейнер меню и его содержимое, убеждаясь, что они визуально привлекательны и удобны для взаимодействия на сенсорных экранах. Меню разработано так, чтобы занимать весь экран, гарантируя, что опции навигации находятся на переднем плане для вас, упрощая выбор того, куда дальше перейти на сайте, без необходимости прищуриваться, пытаясь разглядеть мелкие ссылки.
В сущности, этот фрагмент кода является умным, стильным решением для современных потребностей веб-навигации, особенно для мобильных пользователей. Он использует базовый HTML и продвинутые техники CSS для создания интерактивного, анимированного меню, которое не только функционально, но и приятно использовать.