Z-index不处理带剪辑路径的伪元素

时间:2017-04-07 15:14:36

标签: html css

我正在尝试使用伪元素为剪辑路径创建边框。我已经尝试改变它们中的定位,我的伪元素仍然保持在它之上。我怎么能改变这个? 你可以在这里看到我的代码。

#shield {
  z-index: 1;
  background-color: red;
  box-shadow: 1px 1px 1px black;
  background-image: url("https://upload.wikimedia.org/wikipedia/commons/9/91/Bras%C3%A3o_Porto_Feliz.png");
  background-size: 50%;
  background-repeat: no-repeat;
  background-position: center;
  background-blend-mode: multiply;
  display: inline-block;
  height: 120px;
  width: 200px;
-webkit-clip-path: polygon(100% 0, 100% 75%, 50% 100%, 0% 75%, 0 0);
clip-path: polygon(100% 0, 100% 75%, 50% 100%, 0% 75%, 0 0);
}

#logo {
  width: 100px;
  height: 100px;
}
#shield::before {
  top: 0;
  left: 0;
  transform: scale(1.2);
  content:"";
  display: block;

  width: 100%;
  height: 100%;
  background-color: black;
  position: absolute;
  z-index: -1; 
  
}
		      <div class="navbar-brand navbar-brand-centered" id="shield">
          </div>

要了解我想要做的事情,只需删除:: before元素

完整示例位于here

提前致谢:)

1 个答案:

答案 0 :(得分:1)

只需翻转它。在:: after中使用背景图像,在实际div中使用黑色。

&#13;
&#13;
#shield {
  z-index: 1;
  background-color: black;
  box-shadow: 1px 1px 1px black;
  position: relative;
  
  
  display: inline-block;
  height: 120px;
  width: 200px;
-webkit-clip-path: polygon(100% 0, 100% 75%, 50% 100%, 0% 75%, 0 0);
clip-path: polygon(100% 0, 100% 75%, 50% 100%, 0% 75%, 0 0);
}

#logo {
  width: 100px;
  height: 100px;
}
#shield::before {
  top: 0;
  left: 0;
  transform: scale(1.2);
  content:"";
  display: block;

  width: 100%;
  height: 100%;
  background-image: url("https://upload.wikimedia.org/wikipedia/commons/9/91/Bras%C3%A3o_Porto_Feliz.png");
  background-repeat: no-repeat;
  background-position: center;
  background-blend-mode: multiply;
  
  position: absolute;
  z-index: 1; 
  background-size: 50%;
}
&#13;
<div id="shield"></div>
&#13;
&#13;
&#13;