You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

汉堡菜单无法固定问题求助:滚动时菜单未随视图移动

汉堡菜单固定(Sticky)问题解决方案

问题描述

滚动页面时,汉堡图标固定在角落,但展开的菜单停留在页面顶部,必须回滚才能查看。

问题根源

.nav-bar 使用 position: absolute 定位,其父容器 .container 设置了 height: 100vh,导致菜单仅在初始视口范围内渲染。页面滚动时,容器无法跟随滚动,菜单自然停留在顶部位置。

修复方案

将 .nav-bar 的定位方式从 absolute 改为 fixed,让它相对于浏览器视口固定,这样滚动页面时菜单会始终保持在视口内。同时移除 .container 的 height: 100vh(若页面内容超过一屏),避免容器限制页面高度。

修改后的核心CSS代码

.container {
  width: 100%;
  position: relative;
  /* 移除height: 100vh */
}

.nav-bar {
  position: fixed; /* 替换原absolute */
  background-color: #122;
  top: 0;
  left: -25rem;
  height: 100vh;
  width: 25rem;
  display: flex;
  justify-content: center;
  align-items: center;
  transition: 0.5s ease-out;
  z-index: 100; /* 确保菜单在其他内容上方 */
}

完整修改代码

HTML

<div class="container">
  <nav class="nav-bar">
    <div class="toggle-menu">
      <div class="line line1"></div>
      <div class="line line2"></div>
      <div class="line line3"></div>
    </div>
    <ul class="nav-list">
      <li class="nav-list-item"><a href="" class="nav-link">Home</a></li>
      <li class="nav-list-item"><a href="" class="nav-link">About</a></li>
      <li class="nav-list-item">
        <a href="" class="nav-link">Projects</a>
      </li>
      <li class="nav-list-item"><a href="" class="nav-link">Clients</a></li>
      <li class="nav-list-item">
        <a href="" class="nav-link">Contact Me</a>
      </li>
    </ul>
  </nav>
</div>

CSS

@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@200;300;400&display=swap');
*,*::before,*::after {
  margin: 0;
  padding: 0;
  box-sizing: inherit;
}
html {
  box-sizing: border-box;
  font-family: 'Montserrat', sans-serif;
  font-size: 10px;
}
.container {
  width: 100%;
  position: relative;
}
.nav-bar {
  position: fixed;
  background-color: #122;
  top: 0;
  left: -25rem;
  height: 100vh;
  width: 25rem;
  display: flex;
  justify-content: center;
  align-items: center;
  transition: 0.5s ease-out;
  z-index: 100;
}
.toggle {
  left: 0;
  box-shadow: 1px 0 15px 2px rgba(0, 0, 0, 0.4);
}
.toggle-menu {
  background-color: rgba(0, 0, 0, 0.2);
  position: fixed;
  top: 2rem;
  left: 2rem;
  width: 4rem;
  height: 3rem;
  display: flex;
  flex-direction: column;
  justify-content: space-around;
  padding: 0.2rem 0.5rem;
  border-radius: 0.5rem;
}
.line {
  width: 100%;
  height: 4px;
  border-radius: 5px;
  background-color: #fff;
  transition: 0.4s ease-out;
}
.toggle .line1 {
  background-color: #c91919;
  transform: scale(0.9) rotateZ(-45deg) translate(-6px, 4px);
}
.toggle .line2 {
  display: none;
}
.toggle .line3 {
  background-color: #c91919;
  transform: scale(0.9) rotateZ(45deg) translate(-6px, -4px);
}
.toggle .toggle-menu {
  background-color: white;
}
.nav-list {
  list-style: none;
}
.nav-list-item {
  text-align: center;
  padding: 1rem 0;
}
.nav-link {
  color: #fff;
  font-size: 2.2rem;
  text-decoration: none;
  position: relative;
  padding-bottom: 0.4rem;
}
.nav-link::before {
  position: absolute;
  content: '';
  left: 0;
  bottom: 0;
  width: 100%;
  height: 1px;
  background-color: #fff;
  transform: scaleX(0);
  transition: 0.4s ease-in-out;
  transform-origin: left;
}
.nav-link:hover::before {
  transform: scaleX(1);
}

JavaScript

const toggleButton = document.querySelector('.toggle-menu');
const navBar = document.querySelector('.nav-bar');
toggleButton.addEventListener('click', () => {
  navBar.classList.toggle('toggle');
});

内容的提问来源于stack exchange,提问作者NoobTechLtd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 12:45:45