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

三线Hamburger Menu问题求助:未右对齐且点击无滑动导航

汉堡菜单问题修复方案

问题1:汉堡菜单未右对齐修复

当前header布局下,汉堡菜单被夹在branding和nav中间,无法靠右。只需将汉堡菜单与导航栏包裹在同一容器,让容器整体右对齐即可:

修改HTML的header部分

<header>
  <div class="branding" onclick="goToIndex()" style="cursor: pointer;">
    <h1>Simple</h1>
  </div>
  <!-- 新增容器包裹汉堡菜单与导航 -->
  <div class="header-right">
    <div class="menu-toggle" onclick="toggleMenu()">
      <div class="line"></div>
      <div class="line"></div>
      <div class="line"></div>
    </div>

    <nav id="main-nav">
      <ul>
        <li class="active"><a href="index.html">Home</a></li>
        <li><a href="services.html">Services</a></li>
        <li><a href="portfolio.html">Portfolio</a></li>
        <li><a href="contact.html">Contact</a></li>
      </ul>
    </nav>
  </div>
</header>

添加CSS样式

.header-right {
  display: flex;
  align-items: center;
}

问题2:点击后导航菜单无法滑入修复

当前代码用display: none切换菜单不会触发过渡动画,且nav的transform作用范围错误。改用fixed定位让菜单从左侧滑入,移除display切换逻辑:

修改CSS中nav相关样式

/* 重新设置nav定位,让菜单从屏幕左侧滑入 */
nav {
  position: fixed;
  top: 60px; /* 与header高度匹配 */
  left: 0;
  width: 100%;
  max-width: 280px;
  background-color: #333;
  padding: 20px;
  box-sizing: border-box;
  transform: translateX(-100%);
  transition: transform 0.3s ease;
  z-index: 100;
}

/* 显示菜单时的状态 */
nav.show {
  transform: translateX(0);
}

/* 移除display切换,改用flex垂直排列菜单 */
nav ul {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
}

nav li {
  margin: 15px 0;
}

nav a {
  color: #fff;
  text-decoration: none;
  font-size: 18px;
}

整合后完整代码

HTML

<!DOCTYPE html>
<html lang="en" class="prevent-select">

<head>
  <title>Simple</title>
  <meta charset="utf-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <link rel="stylesheet" href="assets/main.css" />
  <script src="assets/scripts.js"></script>
</head>

<body>
  <header>
    <div class="branding" onclick="goToIndex()" style="cursor: pointer;">
      <h1>Simple</h1>
    </div>
    <div class="header-right">
      <div class="menu-toggle" onclick="toggleMenu()">
        <div class="line"></div>
        <div class="line"></div>
        <div class="line"></div>
      </div>

      <nav id="main-nav">
        <ul>
          <li class="active"><a href="index.html">Home</a></li>
          <li><a href="services.html">Services</a></li>
          <li><a href="portfolio.html">Portfolio</a></li>
          <li><a href="contact.html">Contact</a></li>
        </ul>
      </nav>
    </div>
  </header>

  <main class="center-box">
    <div>
    </div>
  </main>
</body>

</html>

CSS

main {
  display: flex;
  flex-wrap: wrap;
}

body {
  text-align: center;
  margin: 0;
  font-family: Arial, sans-serif;
  background-color: #000;
  color: #fff;
  height: calc(100vh - 60px);
}

.center {
  margin: 0 auto;
  width: 80%;
  text-align: center;
}

.column {
  flex: 1;
  box-sizing: border-box;
  padding: 10px;
}

.columns-container {
  display: flex;
  justify-content: space-around;
  text-align: center;
  flex-wrap: wrap;
}

.content-container {
  margin: 0 auto;
  max-width: 300px;
}

h1.center {
  margin: 0 auto;
  width: fit-content;
}

.column p,
.column img {
  margin-bottom: 10px;
  font-size: 20px;
  max-width: 100%;
}

.center-box {
  width: 95%;
  margin: 1% auto;
  padding: 10px;
  background-color: #000;
  text-align: left;
  box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
  border-radius: 8px;
  flex-basis: 80%;
  overflow: hidden;
  word-wrap: break-word;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
}

.center-box .column {
  text-align: center;
}

.center-box img {
  display: block;
  margin: 0 auto 10px;
}

.thumbnail {
  width: 150px;
  height: 150px;
  cursor: pointer;
}

.modal {
  display: none;
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(0, 0, 0, 0.7);
  justify-content: center;
  align-items: center;
}

#modal-img {
  width: 80%;
  max-width: 800px;
  height: auto;
}

header {
  background-color: #333;
  padding: 10px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  height: 60px;
  box-sizing: border-box;
}

.branding {
  font-size: 25px;
  font-weight: bold;
  color: #fff;
  margin-left: 10px;
  text-decoration: none;
}

.branding h1 {
  margin: 0;
}

p {
  font-size: 27px;
}

.menu-toggle {
  display: flex;
  flex-direction: column;
  cursor: pointer;
  margin-right: 10px;
}

.line {
  height: 3px;
  width: 30px;
  background-color: #fff;
  margin: 6px 0;
}

footer {
  background-color: #333;
  color: #fff;
  padding: 10px;
  text-align: center;
}

.social-links a {
  color: #fff;
  text-decoration: none;
  margin: 0 10px;
  font-size: 25px;
}

.extra-space-bottom {
  margin-bottom: 20px;
}

.extra-space-top {
  margin-top: 50px;
}

.prevent-select {
  user-select: none;
}

.header-right {
  display: flex;
  align-items: center;
}

nav {
  position: fixed;
  top: 60px;
  left: 0;
  width: 100%;
  max-width: 280px;
  background-color: #333;
  padding: 20px;
  box-sizing: border-box;
  transform: translateX(-100%);
  transition: transform 0.3s ease;
  z-index: 100;
}

nav.show {
  transform: translateX(0);
}

nav ul {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
}

nav li {
  margin: 15px 0;
}

nav a {
  color: #fff;
  text-decoration: none;
  font-size: 18px;
}

nav li.active a {
  text-decoration: underline;
}

JavaScript

(保持原代码无需修改)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 01:30:53