【问题标题】: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");
      }
      

      通过使用它,您只需单击元素即可删除或添加相同的类(您应该在单击事件上调用此函数)

      【讨论】:

        猜你喜欢
        • 2016-12-25
        • 2020-10-31
        • 2018-11-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多