【问题标题】:JQuery Menu opens but then disappearsJQuery 菜单打开但随后消失
【发布时间】:2019-02-08 17:09:13
【问题描述】:

我有一个我设置了样式的菜单,但是当我单击菜单时它会闪烁打开,然后立即关闭,然后单击几下后整个菜单消失了!为什么要这样做?

我是否需要将 .on 换成其他东西? 我正在使用最新版本的 jquery

另外,需要知道是否有更好的方法来使链接居中?

JQuery Practice Navbar

    <link href="https://fonts.googleapis.com/icon?family=Material+Icons"
      rel="stylesheet">
<header>
  <div class="navbar-wrapper">
    <nav>
    <a class="burger-nav" href=""><i class="material-icons">menu</i></a>
    <ul class="navbar">
      <li class="nav-items"><a class="navlink" href="#">Home</a></li>
      <li class="nav-items"><a class="navlink" href="#">About</a></li>
      <li class="nav-items"><a class="navlink" href="#">Blog</a></li>
      <li class="nav-items"><a class="navlink" href="#">Contact</a></li>
    </ul>
    </nav>
  </div>
</header>

/* Mobile */


@media only screen and (max-width: 600px) {
  .burger-nav {
  border: 1px solid black;
  display: block;
  text-align: center;
  width: 100%;
  cursor: pointer;
  background: #404040;
}

.material-icons {
  color: white;
}

header nav ul {
  overflow: hidden;
  background: #505050;
  height: 0;
}

header nav ul.open {
  height: auto;
}

header nav ul li {
  list-style: none; 
  width: 100%;
  margin: 0;
  text-align: center;
}

header nav ul li a {
  color: #fff;
  padding: 0.625em;
  border-bottom: 1px solid #404040;
  display: block;
  margin: 0;
}
}



/* Normal */

@media only screen and (min-width: 600px) {
    .navbar {
    list-style: none;
    display: flex;
    justify-content: space-around;
    font-size: 1.5em;
    text-align: center;
    font-family: 'Poppins', sans-serif;
  }

  .navlink {
    text-decoration: none;
    color: inherit;
    text-transform: uppercase;
  }

  .navbar-wrapper {
    background-color: #949699;
    padding: 2em 0;
    box-shadow: inset -0.25em 0 0.25em 0 rgba(0, 0, 0, 0.1);
  }

  .navlink:hover {
    border-bottom: 1px solid lightgrey;
  }

  .burger-nav {
    display: none;
  }
}

$(document).ready(function() {

  $(".burger-nav").on('click', function() {
    $("header nav ul").toggleClass("open");

  });

});

【问题讨论】:

    标签: jquery html css menu navbar


    【解决方案1】:

    问题是你的ul上的height: 0和你的ul.open上设置的自动高度,而不是设置高度为0,只需使用display: blockdisplay: none显示/隐藏。

    此外,导航正在消失,因为汉堡导航链接的 href 为空,我已经用这些更改更新了 codepen。

    header nav ul {
      overflow: hidden;
      background: #505050;
      display: none;
      /*height: 0;*/
    }
    
    header nav ul.open {
      /*height: auto;*/
      display: block;
    }
    

    https://codepen.io/anon/pen/jvmGPO

    导航现在可以按您的预期切换。

    【讨论】:

    • 太棒了!谢谢,我没有意识到 href 会做到这一点,谢谢!
    猜你喜欢
    • 2020-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-01
    • 2013-08-30
    相关资源
    最近更新 更多