单击页面链接时导航/汉堡包图标消失
问题描述:
我正在设计一个单页滚动网站。当我在屏幕宽度小于780px(当出现汉堡包图标时)点击导航栏中的页面链接时,汉堡包图标消失。除非刷新页面,否则我无法恢复。点击页面链接一次后,导航栏也会以全屏宽度消失。我希望始终保持汉堡包图标和顶部导航。我用来折叠显示在780px的全屏菜单的JavaScript导致了这个问题,但我需要它,或者当单击链接时菜单不会消失。感谢任何能够帮助的人!单击页面链接时导航/汉堡包图标消失
$(document).ready(function() {
$('a').click(function() {
$('#menu').slideToggle();
});
});
@media screen and (max-width: 780px) {
nav {
width: 100%;
margin: 0;
padding: 0;
position: relative;
left: 0;
display: block;
opacity: 1.0 !important;
filter: alpha(opacity=100); /* For IE8 and earlier */
}
nav ul {
width: 100%;
margin: 0 auto;
padding: 0;
display: none;
float: none;
}
nav ul li {
font-size: 1.3em;
font-weight: normal;
line-height: 40px;
width: 100% !important;
margin: 0;
padding: 0;
}
nav ul li:nth-of-type(1) { margin-top: 20%; }
nav ul li:hover { background: #565758; }
nav ul li a {
color: white !important;
font-family: "Lato", sans-serif;
border-bottom: none !important;
display: inline-block;
}
nav ul li a.active-link {
color: white !important;
font-size: 1.3em;
}
nav ul li a:hover {
color: white;
width: 100%;
}
/*Display 'show menu' link*/
.show-menu {
margin: 0 !important;
padding: 1em !important;
text-align: right;
display: block;
float: right;
}
/*Show menu when invisible checkbox is checked*/
input[type=checkbox]:checked ~ #menu { background-color: #747475 !important; display: block; height: 100vh; }
}
<header>
<nav>
<label for="show-menu" class="show-menu"><img src="hamburger.png" alt="Hamburger Menu Icon" style="width: 15%;"></label>
<input type="checkbox" id="show-menu" role="button">
<ul id="menu">
<li><a href="#choco">HOME</a>
<li><a href="#about-page">ABOUT</a></li>
<li><a href="#portfolio-page">PORTFOLIO</a></li>
<li><a href="#contact.html">CONTACT</a></li>
</ul>
</nav>
<div id="logo"><img src="logo-grey.png" alt="Logo" style="max-width:100%; height:auto;"></div>
</header>
答
你需要切换添加到复选框为好。它是一个jQuery函数,它使用特定的动画和样式。
$('#show-menu').click(function() {
$('#menu').slideToggle();
});
EDIT
我添加了一个工作示例。我没有在这里使用切换,以获得更好的设计。现在的菜单也与复选框点击toggels :-)
$(document).ready(function() {
$('a').click(function() {
$('#menu').slideToggle();
});
$('#show-menu').change(function() {
if(this.checked)
$('#menu').slideDown();
else
$('#menu').slideUp();
});
});
@media screen and (max-width: 780px) {
nav {
width: 100%;
margin: 0;
padding: 0;
position: relative;
left: 0;
display: block;
opacity: 1.0 !important;
filter: alpha(opacity=100); /* For IE8 and earlier */
}
nav ul {
width: 100%;
margin: 0 auto;
padding: 0;
display: none;
float: none;
}
nav ul li {
font-size: 1.3em;
font-weight: normal;
line-height: 40px;
width: 100% !important;
margin: 0;
padding: 0;
}
nav ul li:nth-of-type(1) { margin-top: 20%; }
nav ul li:hover { background: #565758; }
nav ul li a {
color: white !important;
font-family: "Lato", sans-serif;
border-bottom: none !important;
display: inline-block;
}
nav ul li a.active-link {
color: white !important;
font-size: 1.3em;
}
nav ul li a:hover {
color: white;
width: 100%;
}
/*Display 'show menu' link*/
.show-menu {
margin: 0 !important;
padding: 1em !important;
text-align: right;
display: block;
float: right;
}
/*Show menu when invisible checkbox is checked*/
input[type=checkbox]:checked ~ #menu { background-color: #747475 !important; display: block; height: 100vh; }
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<header>
<nav>
<label for="show-menu" class="show-menu"><img src="hamburger.png" alt="Hamburger Menu Icon" style="width: 15%;"></label>
<input type="checkbox" id="show-menu" role="button">
<ul id="menu">
<li><a href="#choco">HOME</a>
<li><a href="#about-page">ABOUT</a></li>
<li><a href="#portfolio-page">PORTFOLIO</a></li>
<li><a href="#contact.html">CONTACT</a></li>
</ul>
</nav>
<div id="logo"><img src="logo-grey.png" alt="Logo" style="max-width:100%; height:auto;"></div>
</header>
谢谢您的解答。 DomeTune,我想要这个工作,但事实并非如此。我可能会把它设置错误。我用#show-menu(整个代码片段)在我的当前javascript行下面加上了“a”,并在下一行加上了“#menu”。我在下面添加了你的行,并把所有的“});”在他们自己的路线下。不幸的是没有什么改变 – Connie
@Connie我添加了一个工作示例。希望它有帮助,如果不问我。 – DomeTune
谢谢,DomeTune!除了两件事之外,这很有效:为了让菜单扩展,我必须点击汉堡包图标两次。此外,当页面为全角时,我必须刷新页面才能显示顶部导航。但这是迄今为止最接近完美的! – Connie