javascript - css position 伪元素堆叠

标签 javascript jquery html css

你好 我在我的元素中使用了 before & after 并且它运行良好,但是当我为部分设置背景颜色时 before & after 将消失的问题我知道这个问题出现是因为z-index: -1 并且我知道我们不能在父元素上方堆叠子元素(之前和之后)所以解决方案是什么,我不需要创建任何新元素要做到这一点:


这是我需要的: enter image description here

section{
    height:400px;
    padding:50px 0;
    background-color:#00fb8f;
}
.box-shadow-1{
    height:200px;
    background-color:#e8e8e8;
    position:relative;
}
.box-shadow-1:before,
.box-shadow-1:after {
  z-index: -1;
  position: absolute;
  content: "";
  bottom: 25px;
  left: 10px;
  width: 50%;
  top: 80%;
  max-width: 300px;
  background-color:#ff0000;
  -moz-box-shadow: 0 20px 20px #777;
  -webkit-box-shadow: 0 20px 20px #777;
  box-shadow: 0 20px 20px #777;
  -webkit-transform: rotate(-8deg);
  -moz-transform: rotate(-8deg);
  -o-transform: rotate(-8deg);
  -ms-transform: rotate(-8deg);
  transform: rotate(-8deg);
}
.box-shadow-1:after {
  -webkit-transform: rotate(8deg);
  -moz-transform: rotate(8deg);
  -o-transform: rotate(8deg);
  -ms-transform: rotate(8deg);
  transform: rotate(8deg);
  right: 10px;
  left: auto;
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
<section>
    <div class="container">
        <div class="row">
            <div class="col-lg-11 col-lg-offset-1">
                <div class="box-shadow-1">
                    Hello World
                </div>
            </div>
        </div>
    </div>
</section>

最佳答案

你需要给 box-shadow-1 的父级一个 z-index,像这样

.col-lg-11.col-lg-offset-1 {
    position:relative;
    z-index: 0;
}

我还稍微调整了你的伪元素,所以你得到了像发布的图像一样的阴影

堆栈片段

section{
    height:400px;
    padding:30px 0;
    background-color:#e8e8e8;
}
.col-lg-11.col-lg-offset-1 {        /*  added rule  */
    position:relative;
    z-index: 0;
}
.box-shadow-1{
    height:150px;
    background-color:#00fb8f;
    position:relative;
}
.box-shadow-1:before,
.box-shadow-1:after {
  z-index: -1;
  position: absolute;
  content: "";
  bottom: 25px;
  left: 10px;
  width: 50%;
  height: 20px;
  max-width: 300px;
  background-color:#ff0000;
  -moz-box-shadow: 0 30px 20px #777;
  -webkit-box-shadow: 0 30px 20px #777;
  box-shadow: 0 30px 20px #777;
  -webkit-transform: rotate(-8deg);
  -moz-transform: rotate(-8deg);
  -o-transform: rotate(-8deg);
  -ms-transform: rotate(-8deg);
  transform: rotate(-8deg);
}
.box-shadow-1:after {
  -webkit-transform: rotate(8deg);
  -moz-transform: rotate(8deg);
  -o-transform: rotate(8deg);
  -ms-transform: rotate(8deg);
  transform: rotate(8deg);
  right: 10px;
  left: auto;
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
<section>
    <div class="container">
        <div class="row">
            <div class="col-lg-11 col-lg-offset-1">
                <div class="box-shadow-1">
                    Hello World
                </div>
            </div>
        </div>
    </div>
</section>

关于javascript - css position 伪元素堆叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43620116/

相关文章:

javascript - 如何解决 C :\fakepath?

jquery - joint.js 在新的克隆元素上触发拖动开始

javascript - Jquery 寻找最近的链接?

html - 如何使图像拉伸(stretch)到特定段落?

javascript - 对象[对象对象]没有方法 'select2'

javascript - Wordpress 插件 ajax 返回 0

javascript - 如何使用 gulp-inject 将文件的内容插入到我的 index.html 中?

javascript - 为什么在 HTML 中使用 onClick() 是一种不好的做法?

javascript - 使用 async 和 defer 按顺序加载脚本

javascript - 如何根据屏幕宽度在 Javascript 中添加/删除类?