下拉显示在父菜单选项上的CSS菜单子项

时间:2013-06-10 21:46:55

标签: css

这非常令人沮丧,我尝试了各种各样的技巧来实现这一目标。

这个CSS菜单的子项方面显示在主菜单上,我不知道为什么它不会只是正常下拉。

显然我不能发布图片,因为我是新手。抱歉!我希望你理解我对它的解释。当您将鼠标悬停在父菜单项上时,下拉列表实际上不会从父项下方开始下拉。相反,它开始并行并与父级相同的高度,这意味着它模糊了父菜单选项,因此您无法看到它。

    /*Primary nav*/

#menu {
    background: #0072BC;
    border-bottom: 3px solid #efefef;
    border-top: 3px solid #efefef;
    clear: both;
    float: left;
    margin-bottom: 1.5em;
    text-align: center;
    width: 100%;



}
#menu ul, .navbar ul {
    list-style-type: none;
    margin: 0 auto;
    padding: 0;
    width: 95%;
    max-width: 62.5em;


}
#menu ul li, .navbar ul li {
    display:block;
    float: left;
    list-style: none;
    margin: 0;
    padding: 0;
    position: relative;
}
#menu ul li a, .navbar li a, .navbar li a:visited {
    display: block;
    float: left;
    margin: 0;
    padding: .75em;
}
#menu ul li a {
    color: #fff;
    font-size: .9em;
}
#menu ul li a:hover {
    background: #fff;
    color: #0072BC;
    text-decoration: none;
}
ul#menu {
    list-style: none outside none;
    margin: 0;
    padding: 0;
    position: relative;
}



ul#menu ul {
    display: none;
    left: 0;
    list-style: none outside none;
    margin: 0;
    padding: 0;
    position: relative;
    top: 100%;
    width: 10.000em;
}
ul#menu ul ul, ul#menu ul ul ul {
    left: 100%;
    top: 0;
}
ul#menu li {
    display: inline;
    float: left;
    margin: 0;
    position: relative;
}
ul#menu ul li {
    display: block;
    width: 100%;
}
ul#menu a {
    background: #efefef;
    color: #666666;
    display: block;
    float: left;
    height: 1%;
    padding: 6px;
    text-decoration: none;
}
#menu ul ul {
    display: none;
    left: -0.063em;
    list-style: none outside none;
    margin: 0;
    padding: 0;
    position: absolute;
    width: 270px;
    z-index: 100;
}
#menu ul ul li {
    display: block;
    width: 100%;
}
#menu ul ul li a {
}
#menu ul ul ul, #menu ul ul ul ul {
    left: 100%;
    top: -0.063em;
}
#menu ul a:hover, #menu ul li:hover a, #menu ul li.iehover a, #menu ul li.current-menu-item a, #menu ul li.current-menu-item a:visited {
    background: none repeat scroll 0 0 #efefef;
    color: #333;
}
#menu ul li:hover li a, #menu ul li.iehover li a, #menu ul li:hover li:hover li a, #menu ul li.iehover li.iehover li a, #menu ul li:hover li:hover li:hover li a, #menu ul li.iehover li.iehover li.iehover li a, #menu ul li:hover li:hover li:hover li:hover li a, #menu ul li.iehover li.iehover li.iehover li:hover li a {
    background: none repeat scroll 0 0 #efefef;
    color: #0072BC;
    float: none;
    font-size: .8em;
    padding: .5em;
    text-decoration: none;
    z-index: 100;


}
#menu ul li:hover li a:hover, #menu ul li:hover li:hover a, #menu ul li.iehover li a:hover, #menu ul li.iehover li.iehover a, #menu ul li:hover li:hover li a:hover, #menu ul li:hover li:hover li:hover a, #menu ul li.iehover li.iehover li a:hover, #menu ul li.iehover li.iehover li.iehover a, #menu ul li:hover li:hover li:hover li a:hover, #menu ul li:hover li:hover li:hover li:hover a, #menu ul li.iehover li.iehover li.iehover li a:hover, #menu ul li.iehover li.iehover li.iehover li.iehover a, #menu ul li:hover li:hover li:hover li:hover li a:hover, #menu ul li:hover li:hover li:hover li:hover li:hover a, #menu ul li.iehover li.iehover li.iehover li.iehover li a:hover, #menu ul li.iehover li.iehover li.iehover li.iehover li.iehover a {
    background: none repeat scroll 0 0 #efefef;
    color: #333;
}
#menu ul li:hover ul ul, #menu ul li:hover ul ul ul, #menu ul li:hover ul ul ul ul, #menu ul li.iehover ul ul, #menu ul li.iehover ul ul ul, #menu ul li.iehover ul ul ul ul {
    display: none;
}
#menu ul li:hover ul, #menu ul ul li:hover ul, #menu ul ul ul li:hover ul, #menu ul ul ul ul li:hover ul, #menu ul li.iehover ul, #menu ul ul li.iehover ul, #menu ul ul ul li.iehover ul, #menu ul ul ul ul li.iehover ul {
    display: block;
}

1 个答案:

答案 0 :(得分:0)

这是因为您的子菜单有position:absolute;,默认为top:0。试试这个CSS:

#menu ul li {
    height:50px;
}

#menu ul ul {
    position: absolute;
    top:50px;
    left:0;
}

注意我给了顶部菜单项一个特定的高度,这样你就可以从顶部放置精确高度的子菜单。另外,请注意我为子菜单提供了topleft声明;正确position:absolute;使用需要X和Y放置。浏览器默认为0,但如果您没有明确声明,则Firefox上的动画会显示为bork。

旁注

我没有足够的时间进入一切,但你应该真正给你的项目一个类并使用该类作为选择器,而不是依赖所有父子垃圾。它会使你的CSS像这样:

.MainMenuItem {
    height:50px;
}

.SubMenu {
    position: absolute;
    top:50px;
    left:0;
}

只是值得深思。