<div class="mobile-panel">
<ul class="mobile__list">
<li class="mobile__item"><a href="#section-2" class="menu__link"><span data-hover="about us">about us</span></a></li>
<li class="mobile__item"><a href="#section-4" class="menu__link"><span data-hover="products">products</span></a></li>
<li class="mobile__item"><a href="#section-3" class="menu__link"><span data-hover="services">services</span></a></li>
<li class="mobile__item"><a href="#section-5" class="menu__link"><span data-hover="our team">our team</span></a></li>
<li class="mobile__item"><a href="#section-6" class="menu__link"><span data-hover="blog">blog</span></a></li>
<li class="mobile__item"><a href="#section-7" class="menu__link"><span data-hover="contact">contact</span></a></li>
</ul>
<div class="mobile__social">
<div class="social__title">let’s get social!</div>
<div class="social__box">
<a href="#" class="social__icon icon-facebook"></a>
<a href="#" class="social__icon icon-linkedin"></a>
<a href="#" class="social__icon icon-instagram"></a>
<a href="#" class="social__icon icon-twitter"></a>
</div>
</div>
</div>
window.addEventListener('mouseup', function (e) {
const menu = document.querySelector('.mobile-panel')
const menuItem = menu.childNodes
if (e.target != menu && e.target != menuItem) {
document.body.classList.remove('-show')
}
})
document
событие "click" или "mousedown".div.mobile-panel
через однократный вызов Node.contains() (он смотрит сразу на любую глубину). Если внутри – не прятать, если снаружи – закрывать меню.const menuRoot = document.querySelector('div.mobile-panel');
document.addEventListener('mousedown', (e) => {
if (! menuRoot.contains(e.target)) {
document.body.classList.remove('-show')
}
})