javascript - 隐藏覆盖全屏菜单 onclick li 或释放菜单空间
问题描述
你能帮我写一个脚本,在单击菜单中的任何 li 元素或单击空闲菜单空间后隐藏我的覆盖菜单吗?我尝试了几个小时,但我什么也做不了,因为我刚刚开始学习 JS,我需要这个,最后一件事来完成我的项目。
这是我的笔:
codepen.io/erndolowy/pen/MXjdXg
HTML:
<header class="header">
<div class="burger">
<div class="burger__patty"></div>
<div class="burger__patty"></div>
<div class="burger__patty"></div>
</div>
<nav class="menu">
<div class="menu__brand">
<a href=""><div class="logo"></div></a>
</div>
<ul class="menu__list">
<li class="menu__item"><a href="#section2" class="menu__link">Section 2</a></li>
<li class="menu__item"><a href="#section3" class="menu__link">Section 3</a></li>
<li class="menu__item"><a href="#section4" class="menu__link">Section 4</a></li>
<li class="menu__item"><a href="#section5" class="menu__link">Section 5</a></li>
</ul>
</nav>
</header>
<main>
<h1><a href="http://ettrics.com" target="_blank">Simple Overlay Menu</a></h1>
<h2>Bacon ipsum dolor amet tail swine picanha, corned beef landjaeger.</h2>
<p class="support">Ernest Dołowy</p>
</main>
<div class="section2" id="section2">
2nd section
</div>
<div class="section3" id="section3">
3rd section
</div>
<div class="section4" id="section4">
4th section
</div>
<div class="section5" id="section5">
5th section
</div>
脚本:
(function() {
var Menu = (function() {
var burger = document.querySelector('.burger');
var menu = document.querySelector('.menu');
var menuList = document.querySelector('.menu__list');
var brand = document.querySelector('.menu__brand');
var menuItems = document.querySelectorAll('.menu__item');
var active = false;
var toggleMenu = function() {
if (!active) {
menu.classList.add('menu--active');
menuList.classList.add('menu__list--active');
brand.classList.add('menu__brand--active');
burger.classList.add('burger--close');
for (var i = 0, ii = menuItems.length; i < ii; i++) {
menuItems[i].classList.add('menu__item--active');
}
active = true;
} else {
menu.classList.remove('menu--active');
menuList.classList.remove('menu__list--active');
brand.classList.remove('menu__brand--active');
burger.classList.remove('burger--close');
for (var i = 0, ii = menuItems.length; i < ii; i++) {
menuItems[i].classList.remove('menu__item--active');
}
active = false;
}
};
var bindActions = function() {
burger.addEventListener('click', toggleMenu, false);
};
var init = function() {
bindActions();
};
return {
init: init
};
}());
Menu.init();
}());
解决方案
只需添加现有脚本的第二行
var bindActions = function() {
burger.addEventListener('click', toggleMenu, false);
menuList.addEventListener('click', toggleMenu, false);
};
推荐阅读
- vim - VIM)“你完成我”弹出菜单上的覆盖箭头键仅适用于“向下”
- lambda - 使用带有没有主体的 lambda 的 maplist?
- javascript - 我可以使用 GET 请求从私有 GitHub 存储库获取代码吗?
- flutter - 任何人请帮助。Flutter 上的 Listview 未更新
- python - 尝试实现 Django Admin 模型验证
- c# - 从 Sqlite 获取项目并删除重复项目时的 InvalidOperation
- azure - Azure 存储 - 防火墙和终结点的使用
- antd - 在 ANTD 表中为父子显示数据,如树数据
- pdf - 如何检查 TrueType 字体的 cmap 表和子表?
- c# - 如何在 c# xamarin 上使用代理连接 mysql 数据库