html - CSS - Z-index 不适用于相对和绝对位置

标签 html css z-index


我已经使用纯 css3 制作了下拉菜单,但是一个属性(z-index)没有按我预期的那样工作,这是一个非常大的问题,因为下拉列表在菜单上方。理想情况下,它必须放在菜单下。我整天都在尝试解决这个问题,但不幸的是无法弄清楚,所以现在寻求帮助...... 我为问题元素制作了不同的背景颜色,以便更好地了解我想要达到的目标。主要目的是红色背景的子菜单必须在蓝色背景下。
附言我已经尝试使用 jQuery slideDown/slideUp 属性制作此菜单,但它们看起来不像理想的幻灯片效果(如我的示例所示)。它们看起来更像是在拉伸(stretch),而这不是我想要的......

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>

最佳答案

问题是你是 establishing a stacking context.menu_wrapper 上,当您设置 z-index: 999 时。建立堆叠上下文后,您不能将后代元素放在祖先元素的后面。

.menu_wrapper 中删除 z-index: 999:

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

然后将.sub-menu上的z-index1改为负数,比如-1:

Updated Example

.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;
}

关于html - CSS - Z-index 不适用于相对和绝对位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35325895/

相关文章:

php - 解析错误: Help me solve my php error

html - 关于 :config? 的 Firefox anchor 链接

html - CSS 或 HTML 中的形状

html - 当我有多个段落时,div 上的垂直对齐文本不起作用

css - 如何使用Z-index将模态登录界面带到页面顶层?

css - 在两个相对定位的 div 上使用 z-index 的问题

html - 在垂直导航顶部添加箭头

javascript - div的循环运动

javascript - 选择父元素类

javascript - JQuery .css() 函数不会更改所有属性