0

我在菜单及其子菜单的顶部导航中有一个 z-index 问题,我希望菜单与子菜单重叠,我已将菜单的 z-index 设置为高于子菜单,但它不起作用子菜单菜单默认为重叠菜单。

请查看并建议任何可能的方法。

jsFiddle

HTML

<div id="login">
<ul>
<li id="overlap"><a href="#">Log In | Join</a>
    <ul class="tsm">
    <li><a href="#">Log In</a></li>
    <li><a href="#">Join</a></li>
    </ul>
</li>
</ul>
</div>

CSS

    #login {
    margin: 0px auto;
    width: 1000px;
    height: 38px;
    background: #343438;
}
#login ul {
    float: right;
    margin: 0px;
    padding: 0px;
    width: auto;
    height: 38px;
}
#login ul li {
    float: left;
    width: auto;
    height: 34px;
    display: inline;
    list-style-type: none;
}
#login ul a {
    color: #FFF;
    display: block;
    width: auto;
    height: 34px;
    font: bold 16px/34px "Arial Narrow", Arial, sans-serif;
    text-decoration: none;
    text-align: center;
    padding: 0px 15px;
    text-shadow: 0px -1px #000;
}
#login .tsm {
    padding: 20px;
    background-color: #F2F2F4;
    width: 230px;
    height: auto;
    text-align: left;
    border: 4px solid #777;
    position: absolute;
    visibility: hidden;
    top: 32px;
    right: 0px;
    z-index: 100;
}
#login .tsm li a {
    width: 230px;
    height: 30px;
    margin-bottom: 1px;
    text-align: left;
    padding: 0px;
    text-decoration: none;
    color: #000;
    text-shadow: 0px 1px #fff;
    font: 15px/30px Arial, sans-serif;
    border-bottom: 1px solid #DDDDDF;
}
#login ul #overlap {
    position: relative;
    border: 2px solid #900;
    z-index: 1000;
}
#login ul li:hover .tsm {
    visibility: visible;
}
#login ul ul li {
    border: none;
}
4

1 回答 1

1

问题源于您试图将父级置于其子级之上的事实,这会导致问题 - 如果父级向上移动,其子级也会如此。您需要对登录链接(一个标签)进行 z 索引,而不是对父列表进行 z 索引:

http://jsfiddle.net/SaNJA/

代码很粗糙,但它应该可以帮助您入门。

确保为链接添加背景颜色,否则您仍然可以看穿它。

于 2012-10-08T15:16:06.463 回答