为了解决这个问题,您可能需要解决一些问题。首先是您的 HTML 模棱两可/格式不正确:
<div class="out"><div class="left">
</div>
<div class="right"></div>
我的假设是你真正的意思是:
<div class="out">
<div class="left"></div>
<div class="right"></div>
</div>
(你错过了一个结束</div>
)
修复此问题后,最简单的解决方案实际上是将阴影从底层标记 (the .out
div
) 中拉出,而是将阴影创建为覆盖。
例子:
<div class="out">
<div class="left"></div>
<div class="right"></div>
<div class="shadow"></div>
</div>
完成此操作后,您可以轻松地将.left
and.right
<div>
元素放置在您想要的位置,然后强制.shadow
div
出现在 top 上。
考虑以下 CSS(我还对您的 CSS 进行了一些规范化以减少重复):
.out, .shadow {
height: 600px; width: 600px;
}
.out {
background-color: AliceBlue;
position: relative;
}
.shadow {
background: transparent;
-webkit-box-shadow: inset 0px 0px 5px 5px ;
box-shadow: inset 0px 0px 5px 5px;
position: absolute; top: 0; left: 0;
}
.left, .right {
height: 100px; width: 100px;
bottom: 0;
position: absolute;
}
.left {
background-color: green;
left: 0;
}
.right {
background-color: red;
right: 0;
}
因为它.shadow
div
出现在最后,所以你不需要任何特殊z-order
的东西就可以让它出现在顶部。
这是一个工作 cssdesk来演示它的实际操作。
编辑:
如评论中所述 - 原始问题实际上只要求两个框之一出现在. box-shadow
如果您希望其中一个出现在其上方,只需移动该框的 HTML 标记,使其出现在 之后,.shadow
<div>
如下所示:
<div class="out">
<div class="left"></div>
<div class="shadow"></div>
<div class="right"></div>
</div>
这将导致.right
框(红色的)出现在阴影上方,而不是下方 - 无需任何z-index
肮脏。
我已更新 cssdesk 示例以显示此版本。