【问题标题】:JS Hamburger Menu not Collapsing back after Clicking menu item单击菜单项后,JS汉堡菜单不折叠
【发布时间】:2021-11-15 14:14:49
【问题描述】:
如何在单击或选择菜单项后关闭这个简单的 JS Hamburger 菜单。
还可以使用 CSS 实现滑入/滑出动画。动画只是一个奖励,主要是希望菜单在选择项目时自动隐藏。
function myFunction() {
var x = document.getElementById("myLinks");
if (x.style.display === "block") {
x.style.display = "none";
} else {
x.style.display = "block";
}
}
.topnav {
overflow: hidden;
background-color: #333;
position: relative;
}
.topnav #myLinks {
display: none;
}
.topnav a {
color: white;
padding: 14px 16px;
text-decoration: none;
font-size: 17px;
display: block;
}
/* Style the hamburger menu */
.topnav a.icon {
background: black;
display: block;
position: absolute;
right: 0;
top: 0;
}
.topnav a:hover {
background-color: #ddd;
color: black;
}
.active {
background-color: #04AA6D;
color: white;
}
<div class="topnav">
<a href="#home" class="active">Logo</a>
<div id="myLinks">
<a href="#news">News</a>
<a href="#contact">Contact</a>
<a href="#about">About</a>
</div>
<a href="javascript:void(0);" class="icon" onclick="myFunction()">
</a>
</div>
【问题讨论】:
标签:
javascript
html
css
hamburger-menu
【解决方案1】:
您可以使用 onclick 事件。我在a menuitems 中添加了一些
代码如下:
var x = document.getElementById("myLinks");
function myFunction() {
if (x.style.display === "block") {
x.style.display = "none";
} else {
x.style.display = "block";
}
}
function closeNav() {
x.style.display = "none";
}
.topnav {
overflow: hidden;
background-color: #333;
position: relative;
}
.topnav #myLinks {
display: none;
}
.topnav a {
color: white;
padding: 14px 16px;
text-decoration: none;
font-size: 17px;
display: block;
}
/* Style the hamburger menu */
.topnav a.icon {
background: black;
display: block;
position: absolute;
right: 0;
top: 0;
}
.topnav a:hover {
background-color: #ddd;
color: black;
}
.active {
background-color: #04AA6D;
color: white;
}
<div class="topnav">
<a href="#home" class="active">Logo</a>
<div id="myLinks">
<a href="#news" onclick="closeNav();">News</a>
<a href="#contact" onclick="closeNav();">Contact</a>
<a href="#about" onclick="closeNav();">About</a>
</div>
<a href="javascript:void(0);" class="icon" onclick="myFunction()">
</a>
</div>
【解决方案2】:
您应该使用以下方法切换 .active 类:
function myFunction() {
var element = document.getElementById("myDIV");
element.classList.toggle("mystyle");
}
通过使用它,您只需单击元素即可删除或添加相同的类(您应该在单击事件上调用此函数)