所以我尝试制作一个移动菜单,一切都很顺利,但是当我点击它时,它会将我发送到页面顶部而不是下拉菜单。 CDN已正确链接(使用jQuery警报检查),因此它的锚标记错误或jQuery代码。你能检查一下吗?
$(document).ready(function() {
$('#i-nav').click(function() {
$('ul').toggleClass('show');
});
});

html,
body {
min-width: 320px;
min-height: 320px;
margin: 0;
font-family: 'Lato', sans-serif;
background-color: #f1f1f1;
}
.show {
display: block;
}
.testnav ul {
list-style: none;
-webkit-margin-before: 0;
-webkit-margin-after: 0;
-webkit-margin-start: 0px;
-webkit-margin-end: 0px;
-webkit-padding-start: 0px;
margin-right: 50px;
}
.testnav ul li {
display: inline;
float: left;
width: auto;
height: 100px;
}
.testnav ul li a {
line-height: 100px;
display: block;
float: left;
padding: 0 20px;
color: #626262;
}
#home:hover,
#menu2:hover,
#menu3:hover,
#menu4:hover,
#menu5:hover {
color: white;
border-bottom: 5px solid #b0b0b0;
}
#home:hover {
background-color: rgba(223, 187, 66, 0.65);
}
#menu2:hover {
background-color: rgba(196, 52, 52, 0.65);
}
#menu3:hover {
background-color: rgba(80, 139, 97, 0.65);
}
#menu4:hover {
background-color: rgba(89, 148, 160, 0.65);
}
#menu5:hover {
background-color: rgba(87, 95, 189, 0.65);
}
#i-nav {
float: left;
z-index: 101;
line-height: 100px;
text-align: center;
display: none;
}
#logo {
float: left;
margin-left: 50px;
margin-top: 15px;
}
a {
text-decoration: none;
text-transform: uppercase;
}
.floatright-wrapper {
float: right;
}
.testnav {
width: 100%;
height: 100px;
background: white;
margin: auto;
}
@media screen and (max-width: 1024px) {
.floatright-wrapper {
float: none;
}
.testnav ul {
width: 100%;
text-align: center;
margin: 0;
display: none;
}
.testnav ul li {
width: 100%;
}
.testnav ul li a {
width: 100%;
text-align: center;
outline: solid white 1px;
}
#logo {
margin: 10px;
}
#i-nav {
float: right;
margin-right: 40px;
display: block;
font-size: 30px;
color: black;
}
}
@media screen and (max-width: 400px) {
#logo {
width: 50%;
margin-top: 27px;
}
}

<link href="https://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>
<div class="testnav" id="menu">
<img src="css/images/logo.png" alt="logo" id="logo">
<a href="#" id="i-nav"><i class="fa fa-bars icon-2x" aria-hidden="true"></i>
</a>
<nav>
<ul>
<div class="floatright-wrapper">
<li><a href="#" target="_top" id="home">Home</a></li>
<li><a href="#" target="#text-boxes" id="menu2">Menu2</a></li>
<li><a href="#" target="picture-boxes-section" id="menu3">Menu3</a></li>
<li><a href="#" id="menu4">Menu4</a></li>
<li><a href="#" id="menu5">Menu5</a></li>
</div>
</ul>
</nav>
</div>
&#13;
答案 0 :(得分:1)
页面跳到顶端,因为当您点击链接时,它认为这是您要采取的操作。为了防止尝试编辑你的功能,就像我在下面。 .preventDefault
函数告诉浏览器您不希望它尝试转到不同的页面,就像锚标记一样。
$('#i-nav').click(function(e) {
e.preventDefault();
$('ul').toggleClass('show');
});
修改
您的菜单未显示的原因是您要将show
类添加到页面上的每个ul。尝试具体而且像$('.test-nav ul').toggleClass('show');
如果您仍然没有看到该菜单,这很可能是因为之前使用display: none
的CSS会覆盖您的节目类display: block
您可以通过将其更改为{来解决此问题{1}}或者您可以明确地给display: block !important
一个类或ul
,然后在您的jQuery中使用它。
以下是我所谈论的一个例子。如果您有几个嵌套的div,如下所示:
id
用css这样:
<div class="first">
<div class="second"></div>
</div>
第一个将始终覆盖第二个。
答案 1 :(得分:0)
只需要在代码中添加一个简单的东西,它就会开始运作良好。只需添加!对您的班级重要。显示。查看我的代码以供参考。
$(document).ready(function() {
$('#i-nav').click(function() {
$('ul').toggleClass('show');
});
});
html,
body {
min-width: 320px;
min-height: 320px;
margin: 0;
font-family: 'Lato', sans-serif;
background-color: #f1f1f1;
}
.show {
display: block !important;
}
.testnav ul {
list-style: none;
-webkit-margin-before: 0;
-webkit-margin-after: 0;
-webkit-margin-start: 0px;
-webkit-margin-end: 0px;
-webkit-padding-start: 0px;
margin-right: 50px;
}
.testnav ul li {
display: inline;
float: left;
width: auto;
height: 100px;
}
.testnav ul li a {
line-height: 100px;
display: block;
float: left;
padding: 0 20px;
color: #626262;
}
#home:hover,
#menu2:hover,
#menu3:hover,
#menu4:hover,
#menu5:hover {
color: white;
border-bottom: 5px solid #b0b0b0;
}
#home:hover {
background-color: rgba(223, 187, 66, 0.65);
}
#menu2:hover {
background-color: rgba(196, 52, 52, 0.65);
}
#menu3:hover {
background-color: rgba(80, 139, 97, 0.65);
}
#menu4:hover {
background-color: rgba(89, 148, 160, 0.65);
}
#menu5:hover {
background-color: rgba(87, 95, 189, 0.65);
}
#i-nav {
float: left;
z-index: 101;
line-height: 100px;
text-align: center;
display: none;
}
#logo {
float: left;
margin-left: 50px;
margin-top: 15px;
}
a {
text-decoration: none;
text-transform: uppercase;
}
.floatright-wrapper {
float: right;
}
.testnav {
width: 100%;
height: 100px;
background: white;
margin: auto;
}
@media screen and (max-width: 1024px) {
.floatright-wrapper {
float: none;
}
.testnav ul {
width: 100%;
text-align: center;
margin: 0;
display: none;
}
.testnav ul li {
width: 100%;
}
.testnav ul li a {
width: 100%;
text-align: center;
outline: solid white 1px;
}
#logo {
margin: 10px;
}
#i-nav {
float: right;
margin-right: 40px;
display: block;
font-size: 30px;
color: black;
}
}
@media screen and (max-width: 400px) {
#logo {
width: 50%;
margin-top: 27px;
}
}
<link href="https://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>
<div class="testnav" id="menu">
<img src="css/images/logo.png" alt="logo" id="logo">
<a href="#" id="i-nav"><i class="fa fa-bars icon-2x" aria-hidden="true"></i>
</a>
<nav>
<ul>
<div class="floatright-wrapper">
<li><a href="#" target="_top" id="home">Home</a></li>
<li><a href="#" target="#text-boxes" id="menu2">Menu2</a></li>
<li><a href="#" target="picture-boxes-section" id="menu3">Menu3</a></li>
<li><a href="#" id="menu4">Menu4</a></li>
<li><a href="#" id="menu5">Menu5</a></li>
</div>
</ul>
</nav>
</div>