下拉菜单出现在div之外的其他内容后面

时间:2012-09-03 20:39:23

标签: html css drop-down-menu

我创建了一个使用javascript的导航菜单。我在主菜单的部分菜单中有下拉菜单但是当我点击箭头时它只显示下拉到div的末尾(见图):

enter image description here

如何获取它以便下拉列表显示在顶部。我试过溢出:可见,但这似乎不起作用。

HTML:

<div id="top_bar">
<div id="top_inner">
<div id="logo"> <a href="http://www.edosbornephotography.com"><img src="images/logo.gif" alt="Ed Osborne" width="220" height="100" class="logo"></a></div>
<div class="nav">
<ul class = "menu" >
            <li> <a href = "#" > Home </a> </li>
            <li><a href = "#" > Tutorials </a>
        <ul class = "submenu" >
            <li> <a href = "#" > CSS </a> </li>
            <li> <a href = "#"> Javascript </a> </li>
            <li> <a href = "#" > jQuery </a> </li>
            <li> <a href = "#"> HTML </a> </li>
            <li> <a href = "#" > PHP </a> </li>
        </ul>
        </li>

CSS:

.nav {
margin: 0 auto;
position: relative;
padding-top: 85px;
}

ul.menu {
list-style: none;
padding: 0 22px;
margin: 0;
float: left;
background: #222;
font-size: 1.2em;
background: url(../images/topnav_bg.gif) repeat-x;
}

ul.menu li {
float: left;
margin: 0;  
padding: 0 15px 0 0;
position: relative; 
}

ul.menu li ul.submenu {
list-style: none;
position: absolute; 
left: 0; top: 35px;
background: #333;
margin: 0; padding: 0;
display: none;
float: left;
width: 170px;
-moz-border-radius-bottomleft: 5px;
-moz-border-radius-bottomright: 5px;
-webkit-border-bottom-left-radius: 5px;
-webkit-border-bottom-right-radius: 5px;
border: 1px solid #111;
}

ul.menu li ul.submenu li{
margin: 0; padding: 0;
border-top: 1px solid #252525; 
border-bottom: 1px solid #444; 
clear: both;
width: 170px;
}

html ul.menu li ul.submenu li a {
float: left;
width: 145px;
background: #333 url(../images/dropdown_linkbg.gif) no-repeat 10px center;
padding-left: 20px;
}

3 个答案:

答案 0 :(得分:4)

您需要在子菜单标记

中使用Z-index
ul.menu li ul.submenu {
z-index: 5000; // <-- ADD THIS
list-style: none;
position: absolute; 
left: 0; top: 35px;
background: #333;
margin: 0; padding: 0;
display: none;
float: left;
width: 170px;
-moz-border-radius-bottomleft: 5px;
-moz-border-radius-bottomright: 5px;
-webkit-border-bottom-left-radius: 5px;
-webkit-border-bottom-right-radius: 5px;
border: 1px solid #111;
}

----根据您的评论编辑----

等等 - 我认为我们根据您的评论误导了您 - 您希望子菜单向上移动以使其高于现有菜单吗? (而不是页面上的内容?)如果是这样,你需要在子菜单上做一个负边距 - 如下所示:

ul.submenu {
    margin-top:-2em; // adjust me (use 'em' to scale w/ font size adjustments)
}

你需要“position:absolute;”才能使用它,但你已经在CSS的这个类中拥有它了

答案 1 :(得分:2)

我认为答案是z-index,但z-index仅适用于positoned元素。如果你添加

,它就会成功
ul.menu li ul.submenu {
    z-index: 5000;
    position: relative;

}

答案 2 :(得分:1)

确保您的 overflow 设置设为 :show

当我看到我的设置为 hidden 时,我遇到了同样的问题。