html - 三级 CSS 下拉菜单

标签 html css drop-down-menu

我有一个 CSS 下拉菜单,基本上是这样的:http://jsfiddle.net/2RgmH/

<ul id="menu">
  <li><span>Example 1</span>
    <ul>
      <li><span>Level 2-A-1</span></li>
      <li><span>Level 2-A-2</span></li>
      <li><span>Example 2</span>
        <ul>
          <li><span>Example 3</span>
          <li><span>Level 3-A-2</span></li>                   
          <li><span>Level 3-A-3</span></li>                                       
        </ul>
      </li>            
      <li><span>Level 2-A-4</span></li>            
    </ul>
  </li>
  <li><span>Level 1-B</span></li>
  <li><span>Level 1-C</span></li>
  <li><span>Level 1-D</span></li>
  <li><span>Level 1-E</span></li>
</ul>

#menu > li > ul li > ul{   /* Third Level & beyond */
  display:none;
  background:#068;
}
#menu > li > ul li:hover > ul{
  display:block;
  position:absolute;
  left:100%;
  border-left:solid 3px #fff;
  top:0;
  width:auto;
}
#menu > li > ul > li ul > li{
  display:block;
  padding:3px 10px;
  border-top:solid 3px #fff;
  white-space:nowrap;
}
#menu > li > ul > li ul > li:hover > span{
  color:#fff;
}

我希望第 3 级与第 2 级一致。将第 3 级下拉菜单更改为 position:relative 几乎可以做到这一点,但它会将示例 2 的大小增加到第 3 级菜单的大小 - 不好。

我哪里错了?

编辑:

抱歉,我应该链接到实际示例。我正在处理的页面在这里:http://gmnscouts.org.uk/index2.php/ - 这是第二个菜单。如果你去 Counties > Activities,你会看到我的问题。 li 拉伸(stretch)以容纳 ul。这是它设置为相对的。将其设置为绝对会将菜单推到顶部,这也是不受欢迎的行为。

最佳答案

添加此 CSS:

ul.children li ul.children {
position: absolute;
left: 100%;
top: 0;
}
ul.children > li { position: relative; }

通过绝对定位,三级菜单不会占用任何空间,因为它在自己的层中。

关于html - 三级 CSS 下拉菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14293625/

相关文章:

php - 我希望我的链接居中并且按钮仍然有效

javascript - Ember 无法将参数传递给操作

html - 是否有黑客可以让图像在顶部点击?

java - 防止下拉列表选项在 SWT 中的 Windows 上滚动

html - 创建一个没有 svg 的限制矩形(也许)

javascript - 可能的错误 - 嵌入的 YouTube 视频在其标题附近显示了一个不需要的黑色圆圈动画

html - 定位 div 元素

javascript - 您如何从两个价格管理员中获得多个值

asp.net - 如何在服务器端禁用asp.net中的DropDownList选项?

php - 根据数据库中另一个下拉菜单中选择的选项更新一个下拉菜单