Скрытие nav по нажатию на элемент
  • в меню
  • Вроде всё должно работать, но нет

    // Берём кнопку
    let btnMenu = document.querySelector(".btn-menu");
    // Берём меню
    let ulMenu = document.querySelector(".menu");
    let closeMenu = document.querySelector(".closeMenu")
     
    // Обработка события нажатия на кнопку
    btnMenu.addEventListener("click", function () {
        // Переключаем класс меню
        ulMenu.classList.toggle("show-menu");
        // Переключаем класс кнопки
        btnMenu.classList.toggle("btn-show-menu")
    })
    closeMenu.addEventListener("click", function(){
       // Переключаем класс меню
       ulMenu.classList.toggle("show-menu");
       // Переключаем класс кнопки
       btnMenu.classList.toggle("btn-show-menu")
    })
    nav {
            position: absolute;
            font-size: 7vw;
            z-index: 100;
           }
            
           ul {
            position: absolute;
            list-style: none;
            padding: 0;
            width: 600px;
            height: 100vh;
            background-color: green;
            margin-top: 0;
            left: -600px;
            transition: 500ms;
           }
            
           .btn-menu {
            width: 40px;
            height: 40px;
            position: relative;
            background-color: orange;
           }
            
           li {
            padding: 10px 0;
            text-align: center;
           }
            
           li a {
            color: white;
            text-decoration: none;
           }
            
           .show-menu {
            left: 0;
           }
            
           div.btn-show-menu {
            background-color: blue;
           }
    }
    <nav>
                <ul class="menu">
                    <li><a href="#main">Главная</a></li>
                    <li><a href="#company">О компании</a></li>
                    <li><a href="#services">Услуги</a></li>
                    <li><a href="#objects">Объекты</a></li>
                    <li><a href="#guarantees">Гарантии</a></li>
                    <li><a href="#licenses">Лицензии</a></li>
                <li><a href="#contacts">Связь</a></li>
                </ul>
                <div class="btn-menu"></div>
            </nav>


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

    Автор решения: Andrei

    Мой вариант решения закрытие меню по нажатию на ссылке. Без редактирования html, регистрации и смс:

    // Берём кнопку
    const btnMenu = document.querySelector("#btn-menu");
    // Берём меню
    const ulMenu = document.querySelector("#menu");
    
    
    // Обработка события нажатия на кнопку
    btnMenu.addEventListener("click", function() {
      // Переключаем класс меню
      ulMenu.classList.toggle("show-menu");
      // Переключаем класс кнопки
      btnMenu.classList.toggle("btn-show-menu")
    })
    
    // Обработка события нажатия в области меню
    ulMenu.addEventListener('click', event => {
      // Если нажато на ссылку скрываем меню
      if (event.target.getAttribute('href')) {
        ulMenu.classList.remove("show-menu");
      }
    });
    nav {
      position: absolute;
      font-size: 7vw;
      z-index: 100;
    }
    
    ul {
      position: absolute;
      list-style: none;
      padding: 0;
      width: 600px;
      min-height: 100vh;
      background-color: green;
      margin-top: 0;
      left: -600px;
      transition: 500ms;
    }
    
    .btn-menu {
      width: 40px;
      height: 40px;
      position: relative;
      background-color: orange;
    }
    
    .btn-menu:hover {
      cursor: pointer;
    }
    
    li {
      padding: 10px 0;
      text-align: center;
    }
    
    li a {
      color: white;
      text-decoration: none;
    }
    
    .show-menu {
      left: 0;
    }
    
    div.btn-show-menu {
      background-color: blue;
    }
    <nav>
      <ul class="menu" id="menu">
        <li><a href="#main">Главная</a></li>
        <li><a href="#company">О компании</a></li>
        <li><a href="#services">Услуги</a></li>
        <li><a href="#objects">Объекты</a></li>
        <li><a href="#guarantees">Гарантии</a></li>
        <li><a href="#licenses">Лицензии</a></li>
        <li><a href="#contacts">Связь</a></li>
      </ul>
      <div class="btn-menu" id="btn-menu"></div>
    </nav>

    → Ссылка
    Автор решения: Eneko

    Решилось всё проще чем казалось Возвести все li в отдельный div id="nav-close" в скрипт добавить:

    let closeMenu = document.querySelector("#close");
    closeMenu.addEventListener("click", function() {
       ulMenu.classList.remove("show-menu");
    })

    → Ссылка
    Автор решения: ksa

    Скрытие nav по нажатию на элемент < li > в меню

    Предложу такой вариант...

    // Берём кнопку
    const btnMenu = document.querySelector("#btn-menu");
    // Берём меню
    const ulMenu = document.querySelector("#menu");
    
    // Обработка события нажатия на кнопку
    ulMenu.addEventListener("click", function(e) {
      const o = e.target.closest('li')
      if (!o) return
      ulMenu.classList.remove("show-menu");
      btnMenu.classList.remove("btn-show-menu")
    })
    // Обработка события нажатия на кнопку
    btnMenu.addEventListener("click", function() {
      // Переключаем класс меню
      ulMenu.classList.toggle("show-menu");
      // Переключаем класс кнопки
      btnMenu.classList.toggle("btn-show-menu")
    })
    nav {
      position: absolute;
      font-size: 7vw;
      z-index: 100;
    }
    
    ul {
      position: absolute;
      list-style: none;
      padding: 0;
      width: 600px;
      min-height: 100vh;
      background-color: green;
      margin-top: 0;
      left: -600px;
      transition: 500ms;
    }
    
    .btn-menu {
      width: 40px;
      height: 40px;
      position: relative;
      background-color: orange;
    }
    
    .btn-menu:hover {
      cursor: pointer;
    }
    
    li {
      padding: 10px 0;
      text-align: center;
    }
    
    li a {
      color: white;
      text-decoration: none;
    }
    
    .show-menu {
      left: 0;
    }
    
    div.btn-show-menu {
      background-color: blue;
    }
    <nav>
      <ul class="menu" id="menu">
        <li><a href="#main">Главная</a></li>
        <li><a href="#company">О компании</a></li>
        <li><a href="#services">Услуги</a></li>
        <li><a href="#objects">Объекты</a></li>
        <li><a href="#guarantees">Гарантии</a></li>
        <li><a href="#licenses">Лицензии</a></li>
        <li><a href="#contacts">Связь</a></li>
      </ul>
      <div class="btn-menu" id="btn-menu"></div>
    </nav>

    → Ссылка