Скрытие 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>