So i just copied code from this answer and it doesn't seem to work. I can't find out why.
Current behavior: after opening menu and clicking outside of it nothing happens (class 'openMenu' stays)
Expected behavior: after opening menu and clicking outside of it menu closes (class openMenu
removes)
var navToggle = document.getElementById("menu-trigger");
var navMenu = document.getElementById("header-menu");
var isMouseDown = false;
navToggle.addEventListener('click', function() {
this.focus();
navMenu.classList.toggle('openMenu');
navMenu.focus();
});
navMenu.addEventListener('mousedown', function() {
isMouseDown = true;
});
navMenu.addEventListener('mouseup', function() {
isMouseDown = false;
});
navMenu.addEventListener('mouseleave', function() {
isMouseDown = false;
});
navMenu.addEventListener('blur', function() {
if (!isMouseDown) {
navMenu.classList.remove('openMenu');
}
}, true);
header i.fa-bars {
position: absolute;
right: 0;
margin: 5px;
font-size: 1rem;
cursor: pointer;
}
header nav ul {
position: absolute;
top: 0;
left: 0;
-webkit-transform: translateX(-150%);
transform: translateX(-150%);
-webkit-transition: .5s all;
transition: .5s all;
padding: 10px;
width: 50vw;
font-size: 2rem;
background-color: #1f2a3e;
height: 100%;
z-index: 99;
margin: 0 auto;
display: -ms-grid;
display: grid;
-ms-grid-rows: (minmax(50px, 1fr))[auto-fill];
grid-template-rows: repeat(auto-fill, minmax(50px, 1fr));
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
}
header nav ul.openMenu {
-webkit-transform: translateX(0);
transform: translateX(0);
-webkit-transition: .5s all;
transition: .5s all;
}
<header>
<i class="fas fa-bars" id="menu-trigger">fontawesome menu icon</i>
<nav>
<ul id="header-menu">
<li><a href="">Главная</a></li>
<li><a href="">Кейсы</a></li>
<li><a href="">Услуги</a></li>
<li><a href="">Отзывы</a></li>
<li><a href="">Контакты</a></li>
</ul>
</nav>
</header>
Trying to implement this for three hours, tried every available solution but everything failed. What am I doing wrong? How do I accomplish it?
Thank you, Mister @epascarello for the working solution.