Нещодавно я обіцяв поділитися цікавим способом оформлення кнопки-бургера на сайті. Прийшов час це нарешті зробити
За основу візьму код із попередньої демонстрації, а саме зі статті Як із допомогою JavaScript змінити клас елемента. Трішки змінимо самий перший рядок, а саме
<a href="#" id="toogle">Menu</a>
змінимо на
<a id="menu-trigger" class="menu-trigger"><span></span></a>
Також змінимо даний об'єкт у JavaScript та допишемо додавання до нього класу, в якому й будуть відбуватися усі "чари":
function menuOpen() {
if(document.getElementById("top-menu").classList.contains('menu-opened')) {
document.getElementById("top-menu").classList.remove('menu-opened');
document.getElementById("menu-trigger").classList.remove('menu-trigger-checked');
} else {
document.getElementById("top-menu").classList.add('menu-opened');
document.getElementById("menu-trigger").classList.add('menu-trigger-checked');
}
}
function siteLoaded() {
document.getElementById("menu-trigger").addEventListener('click', menuOpen);
}
document.addEventListener("DOMContentLoaded", siteLoaded);
А тепер, власне, фокус, який буде робитися виключно за допомогою CSS. Що ми зробимо? Додамо кілька додаткових елементів перед та після елемента menu-trigger
, гарно їх оформимо та додамо краплинку анімації:
.menu-trigger {
position: relative;
display: block;
cursor: pointer;
margin-top: 20px;
margin-left: 20px;
width: 25px;
height: 25px;
}
.menu-trigger span {
position: absolute;
top: 50%;
left: 0;
display: block;
width: 100%;
height: 8%;
background-color: #222;
font-size: 0px;
transition: background-color 0.3s;
}
.menu-trigger span:before,
.menu-trigger span:after {
position: absolute;
left: 0;
width: 100%;
height: 100%;
background: #222;
content: '';
transition: transform 0.3s, background-color 0.3s;
}
.menu-trigger span:before {
transform: translateY(-250%);
}
.menu-trigger span:after {
transform: translateY(250%);
}
.menu-trigger-checked span:before {
transform: translateY(-350%);
}
.menu-trigger-checked span:after {
transform: translateY(350%);
}
Решту коду залишимо як є, і ось що у нас вийшло:
Прокоментувати
На сайті відображається лише твоє ім'я та коментар. Електронна пошта зберігається виключно для зв'язку з тобою за потреби та в жодному разі не передається стороннім особам.