【发布时间】:2017-07-29 22:15:27
【问题描述】:
我似乎对响应式 CSS 和 JQuery 有一个奇怪的问题
- 当窗口大小调整为 600 像素时
- 点击小时(图标)以显示导航
- 再次单击 hr 以隐藏导航并调整窗口大小后,导航将不可见
如果导航可见,然后调整大小 > 600px 导航始终可见。
问题与 jquery 代码有关吗?
代码在这里:https://jsfiddle.net/ag3tdeqe/
HTML:
<div class="container">
<div class="leftmenu">
<div class="logo">
<img src="http://callmenick.com/theme/callmenick/img/logo.svg" alt="" />
</div>
<div class="icon">
<hr/>
<hr/>
<hr/>
</div>
<div class="social">
<span class="fa fa-facebook"></span>
<span class="fa fa-instagram"></span>
<span class="fa fa-twitter"></span>
<span class="fa fa-youtube"></span>
<span class="fa fa-vine"></span>
<span class="fa fa-tumblr"></span>
<span class="fa fa-google-plus"></span>
<span class="fa fa-linkedin"></span>
</div>
<div class="nav">
<ul class="navigation">
<li> <a class="scroll" href="#home">Home</a>
</li>
<li> <a class="scroll" href="#videos">Videos</a>
</li>
<li> <a class="scroll" href="#gallery">Gallery</a>
</li>
<li> <a class="scroll" href="#about">About</a>
</li>
<li> <a class="scroll" href="#contact">Contact</a>
</li>
</ul>
</div>
</div>
</div>
</div>
CSS:
html, body {
margin:0 auto;
height: 100%;
}
.container {
margin-left: 250px;
height: 100%;
}
.leftmenu {
float:left;
width:250px;
margin-left: -250px;
background-color: #28aadc;
position: fixed;
height: 100%;
overflow: auto;
}
.logo {
display: block;
width: 60px;
text-align: center;
margin:0 auto;
margin-top: 30px;
margin-bottom: 0px;
height: 60px;
-webkit-transition: .3s;
transition: transform .3s;
}
.leftmenu .nav {
position: relative;
height: auto;
padding-bottom: 60px;
margin-top: -30px;
}
.leftmenu .nav ul {
height: auto;
width: auto;
text-align: center;
}
.leftmenu .nav ul li {
width: 100%;
}
.leftmenu .nav ul li > a {
text-align: center;
margin:0 auto;
margin-top: 15px;
width:80%;
display: block;
text-decoration: none;
color:#00648c;
font-family:'arkhip';
font-size: 15px;
padding:5px;
}
.leftmenu .nav ul li > a:hover {
color:white;
}
@media screen and (max-width:767px) {
.container {
margin-left: 0px;
}
.leftmenu {
width: 100%;
margin-left: 0px;
float:none;
position:relative;
height:80px;
}
.leftmenu > h1 {
font-size: 80%;
}
.leftmenu .nav {
display: block;
width: 90%;
padding:0px;
margin-top: -35px;
margin-right: 10px;
}
.leftmenu .logo {
margin:0 auto;
margin-top: 10px;
margin-left: 20px;
float:left;
}
.leftmenu .nav ul li {
width:100px;
display: inline-block;
}
.leftmenu .nav ul li > a {
width:20px;
margin:0 auto;
}
}
@media screen and (max-width:600px) {
.leftmenu {
max-height: 80px;
overflow: visible;
margin-top: -10px;
}
.icon {
display: block;
width: 30px;
float: right;
margin:0 auto;
padding:5px 10px 5px 10px;
margin-right: 30px;
margin-top: 20px;
}
.icon hr {
width:40px;
border:2px solid white;
margin:0 auto;
}
.icon hr:not(:nth-of-type(1)) {
margin-top: 10px;
}
.icon:hover {
cursor: pointer;
}
.leftmenu .nav {
display: none;
position: absolute;
left:0px;
right:0px;
float:none;
margin:0 auto;
width: 95%;
margin-bottom: 10px;
box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.6);
top:80px;
padding-top: 10px;
background-color: white;
border-bottom: 1px solid #28aadc;
border-left: 1px solid #28aadc;
border-right: 1px solid #28aadc
}
.leftmenu .nav ul li {
display: block;
margin:0 auto;
}
.leftmenu .nav ul li:hover a {
color:black;
}
}
查询:
$(".icon").click(function() {
$(".leftmenu .nav").toggle();
});
$(".leftmenu .nav ul li > a").click(function() {
$(".icon:visible").click();
});
【问题讨论】:
-
为什么选择器这么长?只需使用
$('.scroll') -
哦,谢谢@BenMansley
-
@freedomn-m - 解决此问题的最佳方法是什么?
-
@GSoni 它看起来像它应该的行为,也许它的行为不像你预期的那样。正如 Freedomn-2 所解释的,这是一个响应式下拉菜单。这是我观察到的:当菜单打开时,无论页面多宽,我都可以访问链接。你也一样吗?
-
@zer00ne - 我遇到的问题是当页面小于 600px 时,图标显示,当点击它然后点击隐藏导航,然后调整页面大小 - 导航不出现
标签: javascript jquery html css