HTML/CSS 菜单样式栏布局不正确

HTML/CSS menu style bar doesn't layout properly

我在一个网站上工作,作为修订工具的一部分,但是我似乎无法让我的菜单布局正常运行,当我试图为同一个列表中的多个部分创建下拉菜单时,它们要么生成在彼此或布局到它们应该在的一侧,请注意,解决方案应该只使用 HTML 和 CSS.

为了澄清,下拉菜单应该出现在它们各自的下面 "title heading" 可以这么说。

#menu a:link {
  color: #C7C1C1;
  text-decoration: none;
}
#menu a:visited {
  color: #C7C1C1;
  text-decoration: none;
}
#menu a:hover {
  color: #FFFFFF;
}
#menu {
  text-align: center;
  top: 0px;
  position: absolute;
  margin-bottom: -61px;
  font-size: 20px;
}
#menu ul {} #menu ul li {
  display: inline;
  padding-left: 30px;
  padding-right: 30px;
}
#menu ul li ul {
  display: none;
}
#menu ul li:hover ul {
  display: inline-block;
  top: 50px;
  left:
  /*when applying this makes all dropdowns stack*/
  ;
  position: absolute;
  background-color: #4D4D4D;
  text-align: center;
}
<div id="menu">
  <div>
    <ul>
      <li><a href="#x">Introduction</a>
        <ul>
          <li><a href="#xxx">Past</a>
          </li>
          <li><a href="#xxx">Present</a>
          </li>
          <li><a href="#xxx">Future</a>
          </li>
        </ul>
      </li>
      <li><a href="#y">History</a>
        <ul>
          <li><a href="#yyy">Past</a>
          </li>
          <li><a href="#yyy">Present</a>
          </li>
          <li><a href="#yyy">Future</a>
          </li>
        </ul>
      </li>
      <li><a href="#z">National Flags</a>
        <ul>
          <li><a href="#zzz">Past</a>
          </li>
          <li><a href="#zzz">Present</a>
          </li>
          <li><a href="#zzz">Future</a>
          </li>
        </ul>
      </li>
      <li><a href="#a">International Maritime Signal Flags</a>
        <ul>
          <li><a href="#aaa">Past</a>
          </li>
          <li><a href="#aaa">Present</a>
          </li>
          <li><a href="#aaa">Future</a>
          </li>
        </ul>
      </li>
    </ul>
  </div>
</div>

position: relative;设置为<li>

#menu ul li{
    display:            inline;
    padding-left:       30px;
    padding-right:      30px;
    position: relative; // add this
}

然后将left: 0;位置设为<ul>

#menu ul li:hover ul{
    display:            inline-block;
    top:                50px;
    left:               0px; // Begin on the left of the li
    position:           absolute;
    background-color:   #4D4D4D;    
    text-align:         center;
}

您需要将 position: relative; 添加到父元素以将子元素绝对定位到它:

#menu ul li{
    display:            inline;
    padding-left:       30px;
    padding-right:      30px;
    position: relative; // IMPORTANT
}

并且您应该只将 display: inline-block 属性 添加到悬停 #menu ul li: hover ul 和正常 class 定义中的其余样式:(只是为了方便)

#menu ul li ul{
    display:            none;
    top:                50px;
    position:           absolute;
    background-color:   #4D4D4D;    
    text-align:         center;
    width: 100%;
}