我有这个下拉菜单,当它徘徊时,一些内容将落后于另一个div。它看起来像这样:
菜单的css是这样的:
.nav-m {
height: 50px;
width: 60px;
display: block;
position: absolute;
z-index: 9999;
overflow-y: hidden;
text-align: center;
position: absolute;
}
.nav-m:hover {
width: 140px;
height: 210px;
}
.nav-m a {
display: none;
text-indent: -9999px;
position: relative;
height: 20px;
padding: 13px 0;
color: #fff !important;
}
nav a:first-child:hover {
text-indent: -9999px;
}
.nav-m:hover>a {
display: block;
}
.nav-m:hover>a:first-child:after {
color: #6daeaf;
background: #505664;
}
.nav-m a:first-child {
display: block;
text-align: center;
margin-bottom: 16px;
cursor: default;
}
.nav-m a:after {
position: absolute;
top: 0;
padding: 12px 0;
width: 60px;
color: #fff;
font-family: 'icons';
font-size: 24px;
display: block;
text-indent: 0;
background: #6daeaf;
}
nav a:hover {
text-indent: 0px;
text-align: left;
margin-left: 70px;
}
.nav-m a:hover:after {
color: #999;
background: #fff;
text-align: center;
margin-left: -70px;
}
.nav-m a:first-child:before {
position: absolute;
text-indent: 0;
top: 55px;
left: 23px;
content: "";
width: 0;
height: 0;
border-left: 7px solid transparent;
border-right: 7px solid transparent;
border-bottom: 7px solid #6daeaf;
}
.nav-m a:first-child:hover:before {
margin-left: -70px;
}
.nav-m a:first-child:after {
left: 0;
content: "m";
background: #656d7e;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
}
.nav-m a:nth-child(2):after {
content: "p";
-webkit-border-top-left-radius: 5px;
-webkit-border-top-right-radius: 5px;
-moz-border-radius-topleft: 5px;
-moz-border-radius-topright: 5px;
border-top-left-radius: 5px;
border-top-right-radius: 5px;
}
.nav-m a:nth-child(3):after {
content: "s";
}
.nav-m a:last-child:after {
content: "e";
-webkit-border-bottom-left-radius: 5px;
-webkit-border-bottom-right-radius: 5px;
-moz-border-radius-bottomleft: 5px;
-moz-border-radius-bottomright: 5px;
border-bottom-left-radius: 5px;
border-bottom-right-radius: 5px;
}
在菜单div下面是.container,.row,然后是一个div,类='span12'(我正在使用bootstrap)
HTML看起来像这样:
<div id="topbg">
<div class="span9">span9 content here</div>
<div class="span3 avatar-holder" >
<nav class="nav-m" onmouseover="">
<a href="#" title="Menu">Menu</a>
<a href="#" title="Account">Account</a>
<a href="#" title="Settings">Settings</a>
<a href="#" title="Email">Email</a>
<a href="#" title="Email">Email</a>
<a href="#" title="Email">Email</a>
<a href="#" title="Email">Email</a>
<a href="#" title="Email">Email</a>
<a href="#" title="Email">Email</a>
<a href="#" title="Email">Email</a>
</nav>
</div>
</div>
</div><!--end row-->
</div><!--end topbg-->
<div class='container' style='margin-top:20px;'>
<div class='row'>
<div class='span12' style='margin:0;'>
span 12 content
</div><!--end span12-->
</div><!--end row-->
所以,我尝试在以下div上将z-index设置为-1:.row,.container,.span12没有运气。我也尝试将溢出设置为在每个可能的div上可见。我在这里找不到问题。
任何人都可以帮助我吗?
答案 0 :(得分:1)
div 不重叠菜单。这是不可见的菜单项。
text-indent: -9999px
个.nav-m a
菜单项上有.nav-m a:nth-child(3):after {
content: "s";
}
.nav-m a:nth-child(2):after {
content: "p";
}
.nav-m a:first-child:after {
content: "m";
}
,而>还原前三个项目感谢以下CSS
.nav-m a:after {
position: absolute;
top: 0;
padding: 12px 0;
width: 60px;
color: #FFF;
font-family: 'icons';
font-size: 24px;
display: block;
text-indent: 0;
background: #6DAEAF;
}
现在查看所有菜单项的常规样式:
content
它错过了这里至关重要的:after
属性。没有它,伪元素data-shortcut
将根本不会被渲染。
为了证明这一点,我用你的代码准备了 JSFIDDLE (没有修改)。它根本不包含这个重叠的div ,但问题仍然存在。
如果你想继续使用这种方法,我建议做一个小改动,这将为你节省大量的CSS
对每个菜单项锚点添加一个属性<a href="#" title"Settings" data-shortcut="s">Settings</a>
,它将保存菜单项的第一个字母
content
依此类推......现在您可以在CSS content: attr(data-shortcut);
属性
{{1}}
由于您不需要为每个具有不同首字母的菜单项定义CSS。
答案 1 :(得分:0)
尝试赋予z-index
值超过重叠的div。
示例:如果div1
包含z-index 10
,则将更大的z-index提供给隐藏在“div1”后面的<nav>
。
答案 2 :(得分:0)
Z-index仅影响位置设置为它们的元素。确保您将position:relative
或position:absolute
设置为下拉菜单和覆盖它的div。