#javascript #html #css #if-statement #arrow-functions
Вопрос:
Я столкнулся с небольшой проблемой с моим переключаемым меню. Анимация гамбургера работает нормально, и как только вы нажмете ссылку, она приведет вас в этот раздел моей страницы и удалит мой вспомогательный класс CSS «экран блокировки» — это скроет мое переполнение, так что вы не сможете прокручивать меню переключения. Однако, если вы хотите просмотреть меню, закройте его, не нажимая на пункт меню — класс «экран блокировки» остается примененным. Я немного новичок в JavaScript, нужно ли мне включать прослушиватель событий в состояние if/else для добавления новой переменной/функции, чтобы включить прокрутку, если после закрытия меню ссылка не нажата?
const navToggle = document.querySelector(".nav-toggle");
const navLinks = document.querySelectorAll(".nav__link");
navToggle.addEventListener("click", () => {
document.body.classList.toggle("nav-open");
document.body.classList.add("lockscreen");
});
navLinks.forEach((link) => {
link.addEventListener("click", () => {
document.body.classList.remove("nav-open");
document.body.classList.remove("lockscreen");
});
});
Комментарии:
1. Покажите также html-код.
2. Использовать
toggle("lockscreen")
вместоadd("lockscreen")
?3. Спасибо @Barmar’у, что отлично сработало 🙂
Ответ №1:
Вы можете добавить прослушиватель событий в тело, чтобы любые щелчки за пределами меню удаляли «экран блокировки», или более сложным подходом было бы использовать if/else в функции прослушивателя, чтобы проверить, соответствует ли текущее событие.target = = = ‘someElement’
const navToggle = document.querySelector(".nav-toggle");
const navLinks = document.querySelectorAll(".nav__link");
navToggle.addEventListener("click", () => {
document.body.classList.toggle("nav-open");
document.body.classList.add("lockscreen");
});
navLinks.forEach((link) => {
link.addEventListener("click", () => {
document.body.classList.remove("nav-open");
document.body.classList.remove("lockscreen");
});
});
document.body.addEventListener("click", () => {
document.body.classList.remove("lockscreen");
})
Следите за пузырями!
Подробнее о пропаганде, захвате и бурлении читайте здесь