首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当单击锚定链接时,阻止移动导航栏覆盖网页

问当单击锚定链接时,阻止移动导航栏覆盖网页
EN

Stack Overflow用户
提问于 2021-01-04 07:00:21
回答 1查看 45关注 0票数 0

到目前为止,我的网站上的响应式导航栏是一个流线型的单一页面,到目前为止,我已经能够让其他一切都正常工作了。虽然其他所有组件都可以正常工作,但主要的问题是在移动版本中,点击锚点链接时导航栏不会关闭。它最终覆盖了内容,给用户带来了糟糕的体验。如何在代码中修复此问题?代码如下:

代码语言:javascript
复制
<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;
  }
}
EN

回答 1

Stack Overflow用户

发布于 2021-01-04 07:33:54

我猜情况是这样的:你点击了导航栏,->导航栏打开了,点击了一个导航菜单,->导航栏在加载其他页面时没有关闭/正在进行# ->

这是对这种情况的解决方案:你点击导航栏和导航栏打开并点击导航菜单-> (再次点击导航栏)原因,点击导航栏打开和关闭navbar..right?

请按照以下步骤操作:

1.在导航上放置一个显示和隐藏导航菜单的id (假设是"mainnavbar“)。

代码语言:javascript
复制
<nav id="mainnavbar">

2.将onclick属性添加到每个锚标记,并将hidenavvar()作为其值:

代码语言:javascript
复制
<a onclick="hidenavbar()">

3.在js中声明hidenavbar()函数:

代码语言:javascript
复制
<script>
function hidenavbar()
{
    document.getElementById('mainnavbar').click();
}
</script>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65555803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档