HTML | CSS:汉堡菜单问题

时间:2018-08-23 19:45:18

标签: html css

我的名字叫特洛伊(Troy),我一直在尝试为HTML和CSS创建一个汉堡菜单。

我在YouTube上找到了一个教程,并且效果很好,直到我在其下面添加了<nav></nav>。我将包括指向YouTube视频here的链接。

所以基本上,问题是我尝试在标题下添加一个<nav></nav>,然后当我单击汉堡包菜单时,它破坏了整个事情,直到我再次关闭汉堡包菜单:视频中的评论说我应该在CSS中添加min-height: 70px;。试过了,但是什么也没做。感谢正在阅读本文的读者,他们花时间尝试找到一种方法来帮助我<3

另外,这里有我的HTML代码:

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title>Home | Tingle</title>
    <link rel="stylesheet" href="./css/style.css">
    <link href="https://fonts.googleapis.com/css?family=Poppins:300,400" rel="stylesheet">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
  </head>
    <div class="nav">
      <h1>Tingle</h1>
      <label for="toggle">&#9776;</label>
      <input type="checkbox" id="toggle">
      <div class="menu">
        <a href="#">Home</a>
        <a href="#">Documentation</a>
        <a href="#">Invite</a>
      </div>
    </div>
    <div id="discord-header">
      <h1>Join the Discord Support Server!</h1>
      <p>If you need support, or send suggestions, or want to talk about Tingle, just join our discord server!</p>
      <button type="button" name="button"><a href="#">Invite</a></button>
    </div>
  </body>
</html>

这里有CSS代码:

body{
  font-family: 'Poppins', sans-serif;
  width: 100%;
  height: 100%;
  margin: 0;
}

.nav{
  background: #5fffcb;
  border-bottom: 1px solid #EAEAEB;
  text-align: right;
  height: 70px;
  line-height: 70px;
}

.nav h1{
  font-size: 25px;
  float: left;
    line-height: 70px;
    padding-left: 20px;
      margin: 0 30px 0 0;
}

.menu{
  margin: 0 30px 0 0;
}

.menu a{
  clear: right;
  font-weight: bold;
  text-decoration: none;
  color: #282828;
  margin: 0 10px;
  line-height: 70px;
}

label{
  margin: 0 40px 0 0;
  font-size: 26px;
  line-height: 70px;
  display: none;
  width: 26px;
  float: right;
}

#toggle{
  display: none;
}


@media only screen and (max-width: 500px){

  nav{
    height: auto;
 min-height: 70px;
 line-height: 70px;
  }
  label{
    font-weight: bold;
    display: block;
    cursor: pointer;
  }

  .menu{
    text-align: center;
    width: 100%;
    display: none;
  }
  .menu a{
    display: block;
    border-bottom: 1px solid #EAEAEB;
    margin: 0;
  }

  #toggle:checked + .menu{
    display: block;
}

在这里您可以看到实际发生的情况: CSS Issue

-特洛伊

1 个答案:

答案 0 :(得分:0)

好的,我想我已经找到了解决您问题的方法。最初,我怀疑与z-index有关,因为它看起来像在其他文本下方。但是,事实证明您有一些问题:

  1. 您的菜单在文档流中。它会将您的其余内容向下推。

  2. 您的菜单在展开时会遮盖住顶部栏,一旦展开便无法缩回。

  3. 您的菜单没有背景色,因此展开时会显示其下的所有内容。

在@media .menu CSS下,您需要具有以下代码:

 .menu{
 text-align: center;
 width: 100%;
 display: none;
 position: fixed;
 top: 72px;
 z-index: 5;
 background-color: #fff;
}

位置:已修复,将其从文档流中移出。顶部:72像素确保不覆盖顶部栏。 Z-index:5,background-color:#fff,使其显示在页面其余部分的顶部。现在看起来像这样:

fixed image

请自己尝试一下,让我知道它是否可以解决您的问题或仍然需要帮助。无需跳到Bootstrap或任何复杂的框架-这是一个基本的CSS实现,您就在那儿,只缺少了几行代码。