我想创建这个菜单,在这里出现一个下拉菜单,通常我会毫不费力地将UL设置为top:100%。然而,这次我需要它进一步向下,但它需要精确,因此它是跨浏览器友好。所以我尝试的是设置一个margin-top:17px到UL容器以将其推离顶部并且可以工作但是只要我将鼠标悬停在它上面,下拉菜单就会关闭。我在示例中添加了一个RED边框,以显示我希望下拉UL顶部开始的位置。
请看一下 - > Link to example
答案 0 :(得分:1)
您应该使用padding-top
而不是margin-top
(因为保证金位于元素之外并打破悬停事件):
#main-nav ul ul {display:none;position:absolute;top:100%;left:0;padding-top:17px;min-width:150px;}
#main-nav ul ul li {background-color:#000;opacity:0.8;filter:alpha(opacity=80);}
此外,您需要将背景声明从ul
移至li
,因为padding
会将项目移至所需位置,但背景将显示错误(正在父{{ 1}})。
答案 1 :(得分:0)
尝试将margin-top
更改为padding-top
- http://jsfiddle.net/BZpLf/2/
#main-nav ul ul {display:none;position:absolute;top:100%;left:0;padding-top:17px;min-width:150px;background-color:#272727;opacity:0.8;filter:alpha(opacity=80);}
背景颜色也从#000
更改为#272727
答案 2 :(得分:0)
不要将margin-top
替换为padding-top
(需要更改背景设置),只需添加一个spacer元素来弥合父li
和下拉列表ul
之间的差距。查看我的demo。
请注意ul
之前的额外(空)div。
或者,如果您不想添加额外元素,请使用父:after
li
元素上的伪选择器a
,查看我的second demo。这是额外的CSS(就是这样,不再需要更改):
#main-nav > ul > li:hover > a:after {
content: "";
display: block;
min-height: 17px;
position: absolute;
top: 100%;
left:0;
min-width:150px;
}