【问题标题】:Drop Down CSS menu children showing up over parent menu option下拉 CSS 菜单子项显示在父菜单选项上
【发布时间】:2013-06-10 21:46:55
【问题描述】:

这很令人沮丧,我尝试了各种技巧来让它发挥作用。

这个 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;
}

【问题讨论】:

  • 你能不能把它弄个 jsfiddle。
  • 您应该添加 HTML 或 jsfiddle 给我们一个可以使用的示例。
  • 或者至少提供html
  • ...或者网上有很多关于这个确切功能的例子,您可以根据您的特定需求构建,或者至少与之比较。 :)
  • 所有-感谢您的帮助。这个网站太棒了!我以前偶然发现过它,但从未使用过它。那个 jsfiddle 网站很棒。以后我一定会为你做到的。

标签: css


【解决方案1】:

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

#menu ul li {
    height:50px;
}

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

请注意,我为顶部菜单项指定了特定高度,以便您可以将子菜单放置在距顶部的确切高度。另外,请注意我为子菜单提供了top 和left 声明;正确使用 position:absolute; 需要 X 和 Y 放置。浏览器默认为0,但如果您没有明确声明两者,Firefox 上的动画将会失败。

旁注

我没有太多时间深入研究所有内容,但您应该真正为您的项目指定一个类并将该类用作选择器,而不是依赖所有那些父子废话。它会让你的 CSS 变成这样:

.MainMenuItem {
    height:50px;
}

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

只是思考的食物。

【讨论】:

  • 谢谢,效果很好!我完全同意课堂方面的观点。我没有编写原始代码,只是处理确保它已修复。
猜你喜欢
  • 2021-11-19
  • 1970-01-01
  • 1970-01-01
  • 2022-10-15
  • 1970-01-01
  • 1970-01-01
  • 2014-09-28
  • 2012-03-11
  • 1970-01-01
相关资源
最近更新 更多