【问题标题】:CSS Drop Down menu being cut off by parent div heightCSS下拉菜单被父div高度切断
【发布时间】:2012-12-14 04:16:22
【问题描述】:

在我的设置中,我将导航栏水平设置并包含在我的标题 div 中,如下所示:

<div id="header-section">
    <div id="main-menu-wrapper">
        <ul id="main-menu">
            <li><a href="index.html">Home</a></li>
            <li><a href="#">Services</a>
                <ul id="sub-men">
                    <li><a href="#">Service 1</a></li>
                    <li><a href="#">Service 2</a></li>
                    <li><a href="#">Service 3</a></li>
                </ul>
            </li>
        </ul>
        <div class="clear"></div>
    </div>
</div>

我的问题是子菜单没有显示,因为“main-menu-wrapper”上的高度设置为自动。当我将高度设置为 100 像素时,会显示子菜单。当我将子菜单上的位置设置为静态而不是绝对时,它会扩展整个主菜单包装器。如何让子菜单正确显示?

这是我整个标题部分的 CSS 部分:

#header-section {
position: relative;
width: 100%;
padding: 5px 0px;
background: #740600;
}

#main-menu-wrapper {
position: relative;
width: 74%;
min-width: 600px;
height: auto;
margin: 0% auto;
}

#main-menu {
list-style: none;
font-weight: bold;
line-height: 150%;
}

#main-menu li {
position: relative;
float: right;
margin: 0px 5px;
}

#main-menu a {
padding: 3px;
color: #ffffff;
background: #740600;
text-decoration: none;
border-radius: 5px;
}

#main-menu a:hover {
padding: 3px;
color: #740600;
background: #ffffff;
text-decoration: none;
}

#main-menu li ul {
position: absolute;
display: none;
}

#main-menu li ul li{
float: none;
}

#main-menu li:hover ul {
display: block;
}

#main-menu li ul a {
padding: 3px;
color: #ccc;
background: #740600;
text-decoration: none;
border-radius: 5px;
}

#main-menu li ul a:hover {
padding: 3px;
color: #740600;
background: #ccc;
text-decoration: none;
}


#banner-wrapper {
position: relative;
padding: 5px 0 5px;
}

#banner {
position: relative;
max-width: 75%;
min-width: 600px;
margin: 0% auto;
background: #ffffff;
}

#logo {
max-width: 600px;
height: auto;
}

【问题讨论】:

  • 你能做一个小提琴或发布你的css吗?
  • 你在包装器上试过overflow: visibleoverflow: auto 吗?
  • 以前没有,但我现在做到了。 overflow: visible 什么都不做,overflow: auto 只是在我将鼠标悬停在“服务”链接上时添加一个滚动条。

标签: html css


【解决方案1】:

我对你在这里问的内容有点困惑,但我在你的菜单显示的地方创建了一个小提琴。

我删除了#main-menu-wrapper 的样式,并删除了#header-section 的背景颜色。

希望这对您来说是一个不错的起点:http://jsfiddle.net/44vRN/

#header-section {
position: relative;
width: 100%;
padding: 5px 0px;
}

【讨论】:

  • 我需要 #main-menu-wrapper 来使我的页面居中。
  • 我认为你让所有这些 div 有点太复杂了。我建议您重新开始,以便使用更简洁的代码。这是一个不错的教程:line25.com/tutorials/how-to-create-a-pure-css-dropdown-menu
  • 哈哈,是的,我自己做了一些代码,把它弄到了一个角落。我想出了解决问题的方法……这是一种草率的半措施解决方案,但我会接受的。当我启用横幅时,高度问题不是问题,我只是使用 z-index 来确保菜单显示在顶部。
【解决方案2】:

您可以尝试在子菜单上使用绝对定位将其从文档流中移除。

【讨论】:

  • 子菜单 UL 上的位置已设置为绝对位置。我认为这会让它显示在父包装之外,但事实并非如此。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-06
  • 1970-01-01
  • 2012-10-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多