【问题标题】:Close burger menu after clicking on some link单击某个链接后关闭汉堡菜单
【发布时间】:2020-08-21 22:17:25
【问题描述】:

我有一些用 html 和 CSS 制作的汉堡菜单,里面有一些链接。这很好用。但是,当我单击某个链接时,菜单不会关闭。我尝试了一些 JavaScript 示例,但没有成功。

我真的不擅长 JavaScript,需要帮助。关键是当用户单击任何链接时,我需要关闭菜单。谢谢!

<div class="menu-wrap">
  <input type="checkbox" class="toggler" />
  <div class="hamburger"><div></div></div>
  <div class="menu">
    <div>
      <img class="logo" src="assets/logo_white.svg" />
        <ul>
          <li><a href="#">HOME</a></li>
          <li><a href="#cards">SERVICES</a></li>
          <li><a href="#">ABOUT US</a></li>
          <li><a href="#">CONTACT US</a></li>
        </ul>
        <div class="social">
          <ul>
            <li>
              <a href="#"><i class="fab fa-facebook-f"></i></a>
            </li>
            <li>
              <a href="#"><i class="fab fa-twitter"></i></a>
            </li>
            <li>
              <a href="#"><i class="fab fa-instagram"></i></a>
            </li>
            <li>
              <a href="#"><i class="fab fa-linkedin-in"></i></a>
            </li>
          </ul>
        </div>
      </div>
  </div>
</div>

【问题讨论】:

  • 强烈建议在图标右侧添加“菜单”一词,并且请确保您没有强制隐藏菜单,除非是在小屏幕上。桌面优先,移动用户的合同功能/布局。忽略炒作,因为如果这样做,从长远来看,您将减少 很多 的维护,从而使您可以扩展您正在做的事情并 这就是程序员赚更多钱的方式。
  • 你是如何打开菜单的? (添加类?某种类型的动画?..)你可以做类似document.querySelectorAll('.menu-wrap .menu a" ).forEach(e=&gt;{ e.addEventListener('click', ()={*** rewind animation or remove class ***})})
  • 我使用 css 制作汉堡动画,没有 javascript,效果很好。我有动画线条和平滑的颜色,蔓延到整个页面。该菜单仅适用于移动版,桌面版有普通、完整版。

标签: javascript hamburger-menu


【解决方案1】:

所以我假设您有一个没有页面重新加载的单页应用程序。每次用户单击任何链接时,您都可以关闭侧边栏。如果您使用的是 jQuery:

$(document).ready(function(){
    $("a").click(function(){
        $(".menu").hide(); 
    }); 
}); 

或者如果你想使用原版 JS:

var els = document.querySelectorAll('a');

for( var i=els.length; i--; ) {
  els[i].addEventListener( 'click', function(){
     // close your menu here
     document.getElementById('menu').style.display = 'none';
  );
}

如果您已经在使用 jQuery,请坚持使用它。如果没有,请选择原版。

【讨论】:

  • 我投了反对票,而不是 OP。你忽略了用户问了一个 JavaScript 问题并用 jQuery 回应!再转储 70KB 来解决一个小问题是不是编程,它注定了 OP 和他们的访问者会变得更加臃肿。帮助他人时请负起责任。
  • 已编辑问题并添加了香草版本
  • 最好不要使用'a'选择器,最好添加更多Specificity以防止出现'.menu-wrap .menu a'之类的错误
  • 我认为如果用户单击菜单外的某个位置,他想关闭菜单。例如在页脚链接处。然后菜单也应该关闭。
  • 要点击菜单外的某处,最好使用this之类的东西来检测所有元素,而不仅仅是a button呢?)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-24
  • 1970-01-01
  • 2017-05-29
相关资源
最近更新 更多