【问题标题】:CSS dropdown-menu positioning inside a wrapper with hidden overflow带有隐藏溢出的包装器内的 CSS 下拉菜单定位
【发布时间】:2010-11-21 15:16:18
【问题描述】:

我知道,一个模糊的标题,但很难用一句话来描述我想要什么。

我的问题如下,我有一个模板,其中有几个由 jQuery 激活的下拉菜单。下拉列表显示为一级列表中的二级导航项,如下所示:

<ul class="tools">
  <li class="dropdown">
    <a href="#">Tools</a>
    <ul class="submenu">
      <li><a href="/">Option 1</a></li>
      <li><a href="/">Option 2</a></li>
      <li><a href="/">Option 3</a></li>
    </ul>
  </li>
  <li><a href="/">More</a></li>
</ul>

子菜单默认是隐藏的,可以通过单击它所属的列表项(在本例中为“工具”)来显示。子菜单是绝对定位的,因此当它显示时,它总是位于单击的链接下方。这一切都很好。

问题在于,所有这些都包含在一个具有溢出:隐藏的 div 中。当子菜单太靠近这个 div 的右侧,并且列表项太长时,列表会落在包装器的右边框下,使其部分不可见。 Overflow: auto 给包装器一个滚动条,这是不需要的。 Overflow: visible 解决了这个问题,但是使包装器没有高度,因此背景颜色和边框不可见,这是它的功能的一部分,所以这也无济于事。

为了不必引用一大堆代码,可以在http://www.pkr.nl/template/forumdisplay.html上看到一个现场示例

有没有人知道一种解决方案,可以使菜单显示在包装器之外,或者使它们以一种体面的方式与其正确对齐?

【问题讨论】:

    标签: css overflow positioning


    【解决方案1】:

    你在#container .column左浮动有什么原因吗?

    如果您删除浮动,然后从#container 中删除overflow:hidden,您的菜单将会显示。

    【讨论】:

    • 浮动是因为页面运行在允许多列的 css 框架上,这确实需要浮动。再说一次,如果另一列就在它的右边,我只需要将中心(当前唯一的)列浮动到左边。在这种情况下,我看不到任何与右侧重叠的下拉菜单,所以我想我可以将此解决方案用于没有右侧边栏的页面。无论如何,感谢您的快速和良好的回答。我只是等着看更多的 cmets,但你的可能是最好的:)
    猜你喜欢
    • 2018-06-04
    • 2017-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-01
    • 1970-01-01
    相关资源
    最近更新 更多