我在使用CSS z-index堆栈时遇到了麻烦。
HTML:
<ul>
<li><a href="#">Title 1</a></li>
<li class="dropMenu"><a href="#">Title 2</a>
<div class="containerDropDown">
<ul class="menu">
<li><a href="#">Lorem ipsum link</a></li>
<li><a href="#">Lorem ipsum dolor sit met link amet ipsum link</a></li>
<li><a href="#">Dolor sit amet link</a></li>
<li><a href="#">Lorem ipsum link</a></li>
<li><a href="#">Dolor sit amet link</a></li>
<li><a href="#">Lorem ipsum link</a></li>
</ul>
</div>
</li>
<li><a href="#">Title 3</a></li>
<li><a href="#">Title 4</a></li>
<li><a href="#">Title 5</a></li>
</ul>
CSS:
li.dropMenu {
z-index:100;
}
.dropMenu:hover {
padding-bottom:9px;
border:1px solid #575a5d;
border-bottom:0;
background-color:#434749;
position:relative;
-moz-box-shadow:0 0 5px #000;
-webkit-box-shadow:0 0 5px #000;
box-shadow:0 0 10px #000;
z-index:100;
}
.dropMenu:hover a {
padding:0 9px;
color:#8f6f4d;
}
.dropMenu ul {
width:198px;
left:-999em;
padding:16px 0 0 0;
border:1px solid #575a5d;
background-color:#434749;
position:absolute;
-moz-box-shadow:0 0 5px #000;
-webkit-box-shadow:0 0 5px #000;
box-shadow:0 0 5px #000;
}
.dropMenu:hover ul {
/*top:32px;*/
top:10px;
left:-1px;
z-index:20;
}
.dropMenu ul li {
display:block;
width:100%;
padding:0;
z-index:70;
}
.dropMenu:hover ul li a,
.dropMenu ul li a{
display:block;
padding:0 30px 22px 30px;
font-size:0.8em;
color:#d0cfcb;
background:transparent url("/images/background/dropDownMenu-arrow.gif") no-repeat 21px 4px;
}
我需要让li.dropMenu
拥有比其子ul
更高的堆叠顺序。我试图改变z-index但没有运气。有没有人知道任何解决方案?我正在尝试创建一个简单的下拉菜单,但是孩子UL似乎始终位于父li.dropMenu
之上。
我正在为孩子ul
提供一个盒子阴影,但因为它始终位于顶部,阴影覆盖li.dropMenu
答案 0 :(得分:8)
您需要在CSS中为要使用position
的每个元素设置static
属性(z-index
除外)。
答案 1 :(得分:4)
您需要li.dropMenu
position
,z-index
才能正常工作。
尝试
li.dropMenu {
z-index:100;
position:relative;
}
更多信息:
z-index指定位置值为1的框的堆栈级别 绝对的,固定的或相对的。
答案 2 :(得分:3)
你遇到的问题是绝对定位的元素相对于它最近的祖先放置有非静态(即相对的,绝对的,固定的)定位。因此,您的子z-index仅应用于父元素的上下文中,而不是与其进行比较。解决方案:将父级的内容放在子级的兄弟中:
<ul>
<li><a href="#">Title 1</a></li>
<li class="dropMenu">
<div class="parentItemHolder"><a href="#">Title 2</a></div>
<div class="containerDropDown">
<ul class="menu">
<li><a href="#">Lorem ipsum link</a></li>
<li><a href="#">Lorem ipsum dolor sit met link amet ipsum link</a></li>
<li><a href="#">Dolor sit amet link</a></li>
<li><a href="#">Lorem ipsum link</a></li>
<li><a href="#">Dolor sit amet link</a></li>
<li><a href="#">Lorem ipsum link</a></li>
</ul>
</div>
</li>
<li><a href="#">Title 3</a></li>
<li><a href="#">Title 4</a></li>
<li><a href="#">Title 5</a></li>
</ul>
使用CSS(注意,为简洁起见,我删除了一些原文):
.dropMenu {
position: relative;
}
.dropMenu:hover div.parentItemHolder {
padding-bottom:9px;
border:1px solid #575a5d;
border-bottom:0;
background-color:#434749;
position:relative;
-moz-box-shadow:0 0 5px #000;
-webkit-box-shadow:0 0 5px #000;
box-shadow:0 0 10px #000;
z-index:100;
}
.dropMenu ul {
width:198px;
display: none; /* using display: none; instead of left: -999em; */
padding:16px 0 0 0;
border:1px solid #575a5d;
background-color:#434749;
-moz-box-shadow:0 0 5px #000;
-webkit-box-shadow:0 0 5px #000;
box-shadow:0 0 5px #000;
}
.dropMenu:hover ul {
display: block;
position: absolute;
z-index:20;
}
答案 3 :(得分:1)
z-index仅适用于定位元素(位置:绝对,位置:相对或位置:固定)。
答案 4 :(得分:1)
首先删除z-indices
然后您应该定位兄弟姐妹a
和.containerDropDown
,或删除.containerDropDown
,而只需使用ul
。
然后你只需要添加:
.dropMenu>a{position:relative;z-index:2}
比尝试使子z-index小于父级要容易得多。