Не закрывается бургер-меню по клику на странице

Подскажите, пожалуйста, как, используя чистый JS, реализовать закрытие меню по клику на контент страницы?

Данный код бургера реализован, работает нормально:

const burger = document.querySelector('#burger-icon') 
const menu = document.querySelector('.container-header__nav-block--burger')

burger.addEventListener('click', () => {
  menu.classList.toggle('open-menu')
  burger.classList.toggle('open')
}) 

С помощью JQuery удалось реализовать скрытие бургера по событию мыши на странице:

$(document).mousedown(function(e) {
   if (!$('#burger-icon, #burger-icon_1, #burger-icon_2, #burger-icon_3,.container-header__nav-block--burger').is(e.target) && $('.container-header__nav-block--burger').has(e.target).length === 0) {
     $('.container-header__nav-block--burger').removeClass('open-menu')
     $('.container-header__nav-block--burger').addClass('close-menu')
     $('.close-menu').hide(500)
     $('#burger-icon').removeClass('open')
 }
})

Подскажите, пожалуйста, как сделать то же самое с помощью JS? Или как переписать условие if с Jquery на JS? Это мое первое задание на JS, помогите, пожалуйста!)


Ответы (1 шт):

Автор решения: Костенко Алекс

Написал решение. Может оно и тупое, но вдруг кому-то понадобится:

document.addEventListener('mousedown', function(e) {
  if (!(e.target.classList.contains('container-header__burger-block')) &&
      !(e.target.classList.contains('burger-icon')) &&
      !(e.target.classList.contains('container-header__nav-link')) &&
      !(e.target.classList.contains('container-header__nav-list--burger'))) {
  menu.classList.remove('open-menu')
  burger.classList.remove('open')
  }
})

В условии по очереди проверяются содержание классов в элементах, которые являются исключениями из правила: бургер, список и пр. При маусдауне по всем остальным элементам - меню закрывается.

→ Ссылка