【问题标题】:HTML/CSS menu style bar doesn't layout properlyHTML/CSS 菜单样式栏布局不正确
【发布时间】:2015-04-27 13:30:32
【问题描述】:

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

为了澄清,下拉菜单应该出现在它们各自的“标题”下方。

#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>

【问题讨论】:

    标签: html css list layout drop-down-menu


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

      position: relative; 设置为&lt;li&gt;

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

      然后将left: 0;位置设置为&lt;ul&gt;

      #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;
      }
      

      【讨论】:

        猜你喜欢
        • 2017-12-25
        • 1970-01-01
        • 2015-03-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多