jquery - 为什么我的汉堡包导航在桌面模式下无法加载?

标签 jquery html css hamburger-menu

我正在为我的高中编写一个网站,我正在为该网站使用汉堡包导航。当网站缩小到移动模式时,汉堡包加载并且一切正常。但是如果我关闭汉堡并将网站带回桌面模式,导航就消失了,因为 <ul>标记更改为 display="none";而且我找不到修复它的方法。

$(document).ready(function() {
  $(".hamburger").click(function() {
    $("nav > ul").slideToggle(800);
  })
});
nav {
  width: 100%;
  min-height: 50px;
  float: left;
  font-family: "TT Pines Bold Italic DEMO";
  font-size: 18px;
  background: #444;
  text-align: center;
  display: block;
  top: 0;
  position: fixed;
  z-index: 10;
}

nav>ul {
  padding: 0;
  list-style: none;
  overflow: hidden;
  margin: 0;
}

nav>ul>li {
  display: inline;
  line-height: 50px;
}

nav>ul>li>a {
  text-decoration: none;
  color: #fff;
  padding: 25px 17px;
  text-transform: uppercase;
  font-size: 20px;
  letter-spacing: 2px;
  font-family: 'Open Sans Condensed', sans-serif;
}

a:hover {
  text-decoration: none;
  color: #efb60b;
}

@media only screen and (max-width: 320px) {
  nav {
    width: 100%;
    float: left;
    text-align: center;
  }
  nav>ul {
    margin-top: 50px;
    padding: 0;
    display: block;
    list-style: none;
  }
  nav>ul>li,
  nav>ul>li>a {
    line-height: 50px;
    display: list-item;
    margin-left: 0;
  }
  .hamburger {
    padding: 20px;
    display: block;
    float: left;
    text-align: center;
    color: #fff;
    font-size: 24px;
    cursor: pointer;
  }
}

@media only screen and (min-width: 320px) and (max-width: 768px) {
  nav {
    width: 100%;
    float: left;
    text-align: center;
  }
  nav>ul {
    margin-top: 50px;
    padding: 0;
    display: block;
    list-style: none;
  }
  nav>ul>li,
  nav>ul>li>a {
    line-height: 50px;
    display: list-item;
    margin-left: 0;
  }
  .hamburger {
    padding: 20px;
    display: block;
    float: left;
    text-align: center;
    color: #fff;
    font-size: 24px;
    cursor: pointer;
  }
}
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<nav>
  <span class="hamburger"><i class="fa fa-bars" aria-hidden="false"></i></span>
  <ul>
    <li><a href="index.html">Home</a></li>
    <li><a href="about.html">About</a></li>
    <li><a href="students.html">Students</a></li>
    <li><a href="parents.html">Parents</a></li>
    <li><a href="athletics.html">Athletics</a></li>
    <li><a href="contact.html">Contact</a></li>
  </ul>
</nav>

最佳答案

首先,汉堡包图标确实出现在宽屏幕上。但是,它的样式仅适用于小屏幕,因此在宽屏幕上它居中且为黑色,在深灰色背景上不容易看到。

其次,您提供的用例(在小屏幕上打开网站,隐藏菜单,然后加宽屏幕)在测试情况之外不是很常见,所以这不是一个很大的问题。但是,您可以使用新的媒体查询来解决它:

@media only screen and (min-width: 768px) {
  nav>ul {
    display: block!important; /* This forces the browser to apply this rule and show the menu, even if the inline css says to hide it */
  }
  nav>.hamburguer {
    display: none; /* This hides the hamburguer icon */
  }
}

关于jquery - 为什么我的汉堡包导航在桌面模式下无法加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47039974/

相关文章:

jquery - 制作可拖动的布局,可以灵活调整大小和位置

javascript - 内部div受外部div onclick的影响

java - 如何从向下滚动固定次数的网页中提取HTML数据?

javascript - 行删除不起作用

css - 将一个 div 放在另一个 div 的底部

javascript - CSS3 & HTML5 - 旋转对象组

javascript - 从 Jquery submit() 获取 HTMLFormElement 对象

某些行上的 Jquery 数据表 Colspan

jQuery textarea 追加换行行为

javascript - 如何根据选定的值显示表格?