CSS - Z-index不适用于相对和绝对的头寸

时间:2016-02-10 21:06:36

标签: html css html5 css3 z-index


我使用纯css3制作了下拉菜单,但是一个属性(z-index)没有像我预期的那样工作,这是一个非常大的问题,因为下拉列表正在下降菜单。理想情况下,它必须在菜单下删除。我整天试图对这个问题做些什么,但遗憾的是无法弄明白,所以现在请求帮助...... 我为问题项目制作了不同的背景颜色,以便很好地了解我想要达到的目标。主要目的是红色背景的子菜单必须在蓝色背景下。
附:我已经尝试使用jQuery slideDown / slideUp属性创建此菜单,但它们看起来不像理想的幻灯片效果(如我的示例中所示)。它们看起来更像是拉伸,而这不是我想要的......

EXAMPLE ON JSFIDDLE

ul {
  list-style-type: none;
}
.menu_wrapper {
  position: relative;
  z-index: 999;
  /* IS NOT WORKING... O_o...*/
  height: 70px;
  width: 600px;
  background-color: blue;
}
.menu li {
  display: inline;
  float: left;
  display: table;
  height: inherit;
  margin: 3px;
  margin-top: 10px;
}
.menu li a {
  display: table-cell;
  font-family: Verdana;
  font-size: 16px;
  color: gold;
  text-align: center;
  text-decoration: none;
  padding-left: 10px;
  padding-right: 10px;
  vertical-align: middle;
  background: #05487F;
  transition: .2s ease-in-out;
}
.sub-menu {
  position: absolute;
  z-index: 1;
  /* IS NOT WORKING... O_o...*/
  margin-top: -200px;
  margin-left: -132px;
  padding: 15px;
  padding-top: 20px;
  background-color: red;
  transition: all 1s ease-in-out;
}
.sub-menu li {
  float: none;
}
.sub-menu li a {
  padding: 5px 15px;
}
.menu li a:hover + .sub-menu {
  margin-top: 40px;
}
.sub-menu:hover {
  margin-top: 40px;
}
<nav class="menu_wrapper">
  <ul class="menu">
    <li><a href="about/index.html">About</a>
    </li>
    <li><a href="news/index.html">News</a>
    </li>
    <li>
      <a href="">PROBLEM HERE<br>(HOVER THIS)</a>
      <ul class="sub-menu">
        <li><a href="">link 1</a>
        </li>
        <li><a href="">link 2</a>
        </li>
        <li><a href="">link 3</a>
        </li>
      </ul>
    </li>
    <li><a href="">Something</a>
    </li>
    <li><a href="">Contacts</a>
    </li>
  </ul>
</nav>

2 个答案:

答案 0 :(得分:8)

问题是,当您设置Nlpneautralfeature.objects.filter(foo__name='48')时,您.menu_wrapper z-index: 999z-index: 999。建立堆叠上下文时,无法将后代元素放在祖先后面。

.menu_wrapper移除.menu_wrapper { position: relative; /* z-index: 999; << remove */ height: 70px; width: 600px; background-color: blue; }

z-index

然后将.sub-menu上的1-1更改为负数,例如.sub-menu { position: absolute; z-index: -1; margin-top: -200px; margin-left: -132px; padding: 15px; padding-top: 20px; background-color: red; transition: all 1s ease-in-out; }

establishing a stacking context

select

答案 1 :(得分:2)

这是与z-index的交易。

Z-index相对于普通DOM流中的父级(最终相对于Window对象)。但是,绝对定位的对象将从正常的DOM流中删除,因此,Z-Index与其自身相关 - 而不是Window对象。

在您的情况下,您没有为父菜单设置位置,因此将自动分配position:static,不能进行z索引。

将以下内容添加到父菜单中应该允许您将子菜单z-index置于其上方。

position:relative;
z-index:1;