到目前为止,我的网站上的响应式导航栏是一个流线型的单一页面,到目前为止,我已经能够让其他一切都正常工作了。虽然其他所有组件都可以正常工作,但主要的问题是在移动版本中,点击锚点链接时导航栏不会关闭。它最终覆盖了内容,给用户带来了糟糕的体验。如何在代码中修复此问题?代码如下:
<nav>
<input type="checkbox" id="check">
<label for="check" class="checkbtn">
<i class="fas fa-bars"></i>
</label>
<label>
<a href="index.html">
<img src="logo.png" alt="Logo" class="logo"/>
</a>
</label>
<ul>
<li><a class="active" href="#home">Home</a></li>
<li><a href="#features">Features</a></li>
<li><a href="#about">About</a></li>
<li><a href="login.html">Login</a></li>
</ul>
</nav>
/* NAVBAR */
*{
padding: 0;
margin: 0;
text-decoration: none;
list-style: none;
box-sizing: border-box;
}
body{
font-family: 'Nunito', sans-serif;
}
nav{
background: white;
height: 80px;
width: 100%;
}
.logo {
margin-left: 25px;
width: 80px;
height: 80px;
}
nav ul{
float: right;
margin-right: 20px;
}
nav ul li{
display: inline-block;
line-height: 80px;
margin: 0 5px;
}
nav ul li a{
color: black;
font-size: 17px;
padding: 7px 13px;
border-radius: 3px;
text-transform: uppercase;
}
a.active,a:hover{
background: #B9ECFF;
transition: .5s;
}
.checkbtn{
font-size: 30px;
color: black;
float: right;
line-height: 80px;
margin-right: 40px;
cursor: pointer;
display: none;
}
#check{
display: none;
}
@media (max-width: 952px){
label.logo{
font-size: 30px;
padding-left: 50px;
}
nav ul li a{
font-size: 16px;
}
}
@media (max-width: 858px){
.checkbtn{
display: block;
}
ul{
position: fixed;
width: 100%;
height: 100vh;
background: white;
top: 80px;
left: -100%;
text-align: center;
transition: all .5s;
}
nav ul li{
display: block;
margin: 50px 0;
line-height: 30px;
}
nav ul li a{
font-size: 20px;
}
a:hover,a.active{
background: none;
color: #25C0F8;
}
#check:checked ~ ul{
left: 0;
}
}发布于 2021-01-04 07:33:54
我猜情况是这样的:你点击了导航栏,->导航栏打开了,点击了一个导航菜单,->导航栏在加载其他页面时没有关闭/正在进行# ->
这是对这种情况的解决方案:你点击导航栏和导航栏打开并点击导航菜单-> (再次点击导航栏)原因,点击导航栏打开和关闭navbar..right?
请按照以下步骤操作:
1.在导航上放置一个显示和隐藏导航菜单的id (假设是"mainnavbar“)。
<nav id="mainnavbar">2.将onclick属性添加到每个锚标记,并将hidenavvar()作为其值:
<a onclick="hidenavbar()">3.在js中声明hidenavbar()函数:
<script>
function hidenavbar()
{
document.getElementById('mainnavbar').click();
}
</script>https://stackoverflow.com/questions/65555803
复制相似问题