:after background-image 可以用来重叠下一个元素吗?

Can an :after background-image be used to overlap the next element?

我有一张图片,我想将其作为 :after 元素添加到导航栏。重点是 :after 将覆盖下一节的顶部(这是设计的一部分)。

:after 被设置为 position: absolute 和 top: 100% 并且它似乎消失在下一个元素下并且 z-index 没有帮助。当顶部设置为小于 100% 时,您可以在导航上方看到 :after 元素。

标记:

<nav>Contents</nav>
<div>Contents</div>

CSS:

nav {
    width: 100%;
    position: relative;
}

nav:after {
    content: '';
    width: 100%;
    height: 66px;
    background-image: url('image.png');
    background-repeat: repeat-x;
    position: absolute;
    left: 0;
    top: 100%;
}

No CSS for div yet...

提前致谢!

您只需将 Content div 上的 z-index 设置为低于伪元素的 z-index,但请注意 Content div 必须在任何其他元素上设置位置比 static...position:relative 通常就足够了。

或者,只需将伪元素的 z-index 设置为高于 div 的值(可能默认为 1)。

nav {
  width: 100%;
  position: relative;
  height: 50px;
  background: lightgreen;
}
nav:after {
  content: '';
  width: 100%;
  height: 66px;
  background: rgba(0, 0, 255, 0.5);
  background-repeat: repeat-x;
  position: absolute;
  left: 0;
  top: 100%;
  z-index: 2;
}
div {
  height: 260px;
  position: relative;
  background: rgba(255, 0, 0, 0.5);
}
<nav>Nav</nav>
<div>Contents</div>