有人可以向我解释为什么我的导航栏的子菜单在同一行吗?

Can someone explain to me why the submenus of my navigation bar are on the same line?

谁能给我解释一下为什么我的导航栏的子菜单在同一行,为什么悬停在上面时关于栏会变得这么大?我希望他们在彼此之下。这是我的 code.

HTML

<nav class="navigation">
    <ul>
        <li><a href="#">Approach</a></li>
        <li><a href="#">Portfolio</a></li>
        <li><a href="#">Class</a></li>
        <li><a href="#">About</a>
            <ul class="submenu">
                <li><a href="#">Submenu1</a></li>
                <li><a href="#">Submenu2</a></li>
                <li><a href="#">Submenu3</a></li>
            </ul>
        </li>
        <li><a href="#">Blog</a></li>
        <li><a href="#">Get In Touch</a></li>
    </ul>
</nav>

CSS

.navigation {
  position: fixed;
  top: 0;
  left: 0;
  z-index: 9999;
  width: 100%;
  background-color: #f6f6f6;
}

ul {
  list-style-type: none;
  margin: 0;
  padding: 0;
  overflow: hidden;
}

ul li {
  display: inline-block;
  vertical-align: top;
  position: relative;
}

ul li a {
  display: block;
  color: black;
  text-align: center;
  padding: 25px 20px;
  text-decoration: none;
  white-space: nowrap;
}

nav li ul {
  display: none;
}

nav li:hover ul {
  display: block;
}

您需要从 ul 中删除 overflow:hidden,然后绝对定位子菜单。

.navigation {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  background-color: #f6f6f6;
}
ul {
  list-style-type: none;
  margin: 0;
  padding: 0;
}
ul li {
  display: inline-block;
  vertical-align: top;
  position: relative;
}
ul li a {
  display: block;
  color: black;
  text-align: center;
  padding: 25px 20px;
  text-decoration: none;
  white-space: nowrap;
}
nav li ul {
  display: none;
  position: absolute;
  top: 100%;
  left: 0;
}
nav li:hover ul {
  display: block;
}
<nav class="navigation">
  <ul>
    <li><a href="#">Approach</a>
    </li>
    <li><a href="#">Portfolio</a>
    </li>
    <li><a href="#">Class</a>
    </li>
    <li><a href="#">About</a>
      <ul class="submenu">
        <li><a href="#">Submenu1</a>
        </li>
        <li><a href="#">Submenu2</a>
        </li>
        <li><a href="#">Submenu3</a>
        </li>
      </ul>
    </li>
    <li><a href="#">Blog</a>
    </li>
    <li><a href="#">Get In Touch</a>
    </li>
  </ul>
</nav>

您正在提供 ul overflow: hidden,这就是它没有出现的原因。然后,您需要绝对定位 .submenu 元素。

CSS

.navigation {
  position: fixed;
  top: 0;
  left: 0;
  z-index: 9999;
  width: 100%;
  background-color: #f6f6f6;
}

ul {
  list-style-type: none;
  margin: 0;
  padding: 0;
}

ul > li {
  position: relative;
  display: inline-block;
  vertical-align: top;
}

ul > li:hover .submenu {
  display: block;
}

ul li a {
  display: block;
  color: black;
  text-align: center;
  padding: 25px 20px;
  text-decoration: none;
  white-space: nowrap;
}

nav li:hover ul {
  display: block;
}

.submenu {
  position: absolute;
  width: 200px;
  border: 1px solid;
  display: none;
}

悬停时的结果:

DEMO