当前位置: 首页 > 知识库问答 >
问题:

导航菜单下的页面正在滚动

南宫建白
2023-03-14

我用html、css和JavaScript创建了一个响应式导航栏。当页面宽度小于768px时,将显示条形图标,单击该图标时,将显示导航菜单。问题是当导航菜单出现时,页面仍在后台滚动。导航菜单下的滚动应该停止。

null

    const button1 = document.getElementsByClassName("button")[0];
    const navLinks1 = document.getElementsByClassName("navLinks")[0];
    button1.addEventListener('click', () => {
        navLinks1.classList.toggle('active')
    })
* {
    box-sizing: border-box;
    text-decoration: none;
    list-style: none;
    padding: 0;
    margin: 0;
    font-family: 'Prompt', sans-serif;
}

.logo {
    display: block;
    padding: 1rem;
    color: whitesmoke;
}

nav {
    position: fixed;
    top: 0;
    width: 100%;
    display: flex;
    justify-content: space-between;
    align-items: center;
    background-color: blueviolet;
    z-index: 5;
}

nav ul {
    display: flex;
}

nav ul li a {
    padding: 1rem;
    display: block;
    color: whitesmoke;
}

nav ul li a:hover {
    background-color: rgb(48, 0, 94);
}

.button {
    position: absolute;
    top: 0.5rem;
    right: 0.5rem;
    display: none;
    color: whitesmoke;
}

.content {
    margin-top: 5rem;
    text-align: center;
}

@media screen and (max-width: 786px) {
    .button {
        display: block;
        font-size: 2rem;
    }
    nav {
        flex-direction: column;
    }
    .navLinks {
        display: none;
        flex-direction: column;
        width: 100%;
        text-align: center;
        margin-top: 2rem;
    }
    .navLinks.active {
        display: flex;
        height: 100vh;
    }
}
<header>
    <nav>
        <div class="logo">Logo</div>

        <a href="#" class="button" id="btn"><i class="fa fa-bars"></i></a>

        <ul class="navLinks">
            <li><a href="#" class="key1" id="active">Home</a></li>
            <li><a href="#" class="key2">About</a></li>
            <li><a href="#" class="key3">Blog</a></li>
            <li><a href="#" class="key4">Contact</a></li>
        </ul>

    </nav>
</header>

    <div class="content">
        <h1>Content</h1>
        <h2>More content</h2>
    </div>

    <br> <br> <br> Content
    <br> <br> <br> Content
    <br> <br> <br> Content
    <br> <br> <br> Content
    <br> <br> <br> Content
    <br> <br> <br> Content
    <br> <br> <br> Content
    <br> <br> <br> Content
    <br> <br> <br> Content
    <br> <br> <br> Content
    <br> <br> <br> Content
    <br> <br> <br> Content
    <br> <br> <br> Content
    <br> <br> <br> Content
    <br> <br> <br> Content
    <br> <br> <br> Content
    <br> <br> <br> Content
    <br> <br> <br> Content
    <br> <br> <br> Content

null

共有1个答案

康言
2023-03-14

在菜单打开时向主体添加类,如下所示:

document.body.classList.toggle("active");

还要将溢出:隐藏;添加到其中...

body.active {
  overflow: hidden;
}

null

const button1 = document.getElementsByClassName("button")[0];
const navLinks1 = document.getElementsByClassName("navLinks")[0];
button1.addEventListener('click', () => {
  navLinks1.classList.toggle('active');
  document.body.classList.toggle("active");
})
* {
  box-sizing: border-box;
  text-decoration: none;
  list-style: none;
  padding: 0;
  margin: 0;
  font-family: 'Prompt', sans-serif;
}

body.active {
  overflow: hidden;
}

.logo {
  display: block;
  padding: 1rem;
  color: whitesmoke;
}

nav {
  position: fixed;
  top: 0;
  width: 100%;
  display: flex;
  justify-content: space-between;
  align-items: center;
  background-color: blueviolet;
  z-index: 5;
}

nav ul {
  display: flex;
}

nav ul li a {
  padding: 1rem;
  display: block;
  color: whitesmoke;
}

nav ul li a:hover {
  background-color: rgb(48, 0, 94);
}

.button {
  position: absolute;
  top: 0.5rem;
  right: 0.5rem;
  display: none;
  color: whitesmoke;
}

.content {
  margin-top: 5rem;
  text-align: center;
}

@media screen and (max-width: 786px) {
  .button {
    display: block;
    font-size: 2rem;
  }
  nav {
    flex-direction: column;
  }
  .navLinks {
    display: none;
    flex-direction: column;
    width: 100%;
    text-align: center;
    margin-top: 2rem;
  }
  .navLinks.active {
    display: flex;
    height: 100vh;
  }
}
<header>
  <nav>
    <div class="logo">Logo</div>

    <a href="#" class="button" id="btn"><i class="fa fa-bars"></i></a>

    <ul class="navLinks">
      <li><a href="#" class="key1" id="active">Home</a></li>
      <li><a href="#" class="key2">About</a></li>
      <li><a href="#" class="key3">Blog</a></li>
      <li><a href="#" class="key4">Contact</a></li>
    </ul>

  </nav>
</header>

<div class="content">
  <h1>Content</h1>
  <h2>More content</h2>
</div>

<br> <br> <br> Content
<br> <br> <br> Content
<br> <br> <br> Content
<br> <br> <br> Content
<br> <br> <br> Content
<br> <br> <br> Content
<br> <br> <br> Content
<br> <br> <br> Content
<br> <br> <br> Content
<br> <br> <br> Content
<br> <br> <br> Content
<br> <br> <br> Content
<br> <br> <br> Content
<br> <br> <br> Content
<br> <br> <br> Content
<br> <br> <br> Content
<br> <br> <br> Content
<br> <br> <br> Content
<br> <br> <br> Content
 类似资料:
  • 本文向大家介绍WordPress动态页面菜单导航,包括了WordPress动态页面菜单导航的使用技巧和注意事项,需要的朋友参考一下 在编写了可以在Wordpress中创建给定页面的子页面列表的函数之后,我需要更强大,更自动的功能。为此,我创建了一个插件,该插件将创建一个包含动态创建的页面菜单的小部件。 该小部件可以确定当前正在显示的页面,并将爬到页面树上,直到找到根页面为止。在攀爬页面树的同时,插

  • 页面局部滚动,利用vue-scrollto做了页面内部导航的功能,如何实现监听滚动页面,自动切换导航菜单?点击导航,右侧滚动到锚定位置,同时,右侧滚动时,希望能自定定位导航菜单。 监听滚动页面,自动切换导航菜单

  • 主要内容:Eclipse 导航菜单,Open Type,Open Type in Hierarchy,Open ResourceEclipse 导航菜单 导航菜单提供了许多菜单项,允许您快速定位和导航到资源。 其中,Open Type、Open Type in Hierarchy 和 Open Resource 菜单项往往非常有用。 Open Type Open Type 菜单项会弹出一个对话框,允许您定位 Java 类型。在过滤器文本框中输入完全限定名称或类的名称。'*' 字符代表 0 个或多

  • 为网站提供导航功能的菜单。 顶栏 适用广泛的基础用法。 导航菜单默认为垂直模式,通过mode属性可以使导航菜单变更为水平模式。另外,在菜单中通过submenu组件可以生成二级菜单。Menu 还提供了background-color、text-color和active-text-color,分别用于设置菜单的背景色、菜单的文字颜色和当前激活菜单的文字颜色。 <el-menu :default-act

  • NavMenu 导航菜单 为网站提供导航功能的菜单。 顶栏 适用广泛的基础用法。 ::: demo render() { return ( <div> <Menu theme="dark" defaultActive="1" className="el-menu-demo" mode="horizontal" onSelect={this.onSelect.bind(thi

  • 为网站提供导航功能的菜单。 顶栏 适用广泛的基础用法。 <el-menu [model]="0" (modelChange)="handle($event)" class="el-menu-demo" mode="horizontal"> <el-menu-item index="1">处理中心</el-menu-item> <el-submenu index="2" title="我的工