html - 为嵌套在固定容器内的绝对位置设置 Z-index

标签 html css css-position z-index

我有一个 header 标签,我为其设置了一个固定属性。在该 header 标签内,我有一个设置为绝对定位的导航标签。我遇到的问题是我似乎无法将 header 标签拉到导航标签前面。即使将 header 标签设置为 1000 的 z-index 并将 nav 标签设置为 500 的 z-index。我正在尝试做的事情可能吗?

<header> <-- fixed position
   <section> logo here </section>
   <nav data-nav="main-navigation">   <-- absolute position
      <ul>
         <li><a href="#" id="selected">HOME <div></div></a></li>
         <li><a href="#">ABOUT US</a></li>
         <li><a href="#">SERVICES</a></li>
         <li><a href="#">GALLERIES</a></li>
         <li><a href="#">BLOG</a></li>
         <li><a href="#">CONTACT US</a></li>
      </ul>
     </nav>
  </header>

这是一支代码笔来展示我正在尝试做的事情

CSS position codepen

最佳答案

使用position: fixed,子元素不能位于其父元素后面。诀窍是在父元素上使用伪元素,它将充当子元素的 sibling 。

根据您的描述,文本将位于标题颜色的后面。

header{
  position: fixed;
  width: 100%;
  height: 100px;
}

header::before {
  content: '';
  position: absolute;
  height: 100%;
  z-index: 100;
  width: 100%;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  background: red;
}

header nav{
  position: fixed;
  background-color: blue;
  width: 50%;
  height: 50vh;
  top:0;
}

header ul{
  list-style:none;
}

header a{
  color: #fff;
}
<header>
  <h1>HELLO</h1>
  
  <nav>
    <ul>
      <li><a href="#">Home</a></li>
      <li><a href="#">About</a></li>
      <li><a href="#">Contact</a></li>
    </ul>
  </nav>
</header>

如果您希望文本显示在红色之上,则需要在 nav 上使用伪元素。如果您不需要 position: fixed,您可以在父级上使用任何其他定位并结合子级上的负 z-index:

header{
  position: absolute;
  width: 100%;
  background-color: red;
  height: 100px;
}

header nav{
  position: absolute;
  background-color: blue;
  width: 50%;
  height: 50vh;
  top:0;
  z-index: -1;
}

header ul{
  list-style:none;
}

header a{
  color: #fff;
}
<header>
  <h1>HELLO</h1>
  
  <nav>
    <ul>
      <li><a href="#">Home</a></li>
      <li><a href="#">About</a></li>
      <li><a href="#">Contact</a></li>
    </ul>
  </nav>
</header>

关于html - 为嵌套在固定容器内的绝对位置设置 Z-index,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51637182/

相关文章:

css - 元素的 px 宽度大于设备视口(viewport),但仍能完整显示(移动网络应用程序)

html - 根据另一个div的高度计算一个div的位置

html - 新的 div 不会出现在固定标题下

java - 用于 html 到 pdf 的 Xmlparser

javascript - 根据 div 的宽度动态切换类

javascript - 使用 jQuery 根据数据属性更改 url

javascript - swf 文件到 html-css-js

javascript - 位置 : fixed, 没有按预期工作

javascript - 在 Canvas 上随机绘制彩色圆圈

jquery - 无法让 jQuery Waypoints 工作