这非常令人沮丧,我尝试了各种各样的技巧来实现这一目标。
这个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;
}
答案 0 :(得分:0)
这是因为您的子菜单有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上的动画会显示为bork。
旁注
我没有足够的时间进入一切,但你应该真正给你的项目一个类并使用该类作为选择器,而不是依赖所有父子垃圾。它会使你的CSS像这样:
.MainMenuItem {
height:50px;
}
.SubMenu {
position: absolute;
top:50px;
left:0;
}
只是值得深思。