我有以下HTML结构,我希望保持嵌套:
<div class="parent">
<div class="shadow">Shadow here!</div>
</div>
CSS:
.parent {
background: blue;
z-index: 2;
height: 200px;
}
.shadow {
background: lightgrey;
z-index: 0;
opacity: 0.4;
position: relative;
top: 194px;
}
基本上,我希望div .shadow
位于div .parent
下方。如果你看下面链接的渲染,你可以看到父蓝色背景的一部分穿过阴影;相反,我希望父元素覆盖那个重叠的部分(堆叠在上面,我想你可以说):
https://jsfiddle.net/9ya7kb67/
我怎么能这样做?我正在摆弄z-index,但这并没有帮助。
答案 0 :(得分:4)
这很简单...像这样给你的阴影z-index属性负值。您还可以通过提供更高的价值来管理z-index。或者你可以使用box-shadow属性来制作阴影。
rake db:seed users=yes
答案 1 :(得分:3)
您可以将框阴影与CSS3 https://css-tricks.com/snippets/css/css-box-shadow/
一起使用答案 2 :(得分:2)
CSS box-shadow works by creating a shadow behind an element. Thus, the element is already on top of the shadow. Here, z-index is not required.
the code:
.parent {
background: blue;
height: 200px;
box-shadow: 0 8px 0 4px light grey;
}
is doing the same thing regardless if you include z-index or not.
答案 3 :(得分:1)
我不确定这是否是您正在寻找的答案,但您始终可以使用box-shadow
上的CSS属性parent
来获得“阴影”&#39 ;效果。
您可以在线找到盒子阴影生成器,让您的生活更轻松,例如this one
答案 4 :(得分:1)
.shadow
需要一个负z-index
值,因为z-index
是从它的父级继承并且相对显示的。 z-index:0;
赋予它与父级具有相同的总体z-index
,并且因为子级在父级之后被声明,因此它位于顶部。这意味着通过将其设置为z-index:-1
,您将阴影放在父级后面。
但是,如果您只想要一个盒子阴影,我建议您实际使用CSS3 Box Shadows而不是创建其他元素。
答案 5 :(得分:0)
因为阴影是父级的INSIDE,所以无法使父级显示在内部的任何内容之上。这是因为在CSS中,子元素将其父级的z-index作为BASE z-index继承。它可以拥有自己的z-index,但它永远不会少于其父级。
编辑:盒子影子解决方案 - https://jsfiddle.net/9ya7kb67/3/
.parent {
background: blue;
z-index: 2;
height: 200px;
box-shadow: 0 8px 0px 4px lightgrey;
}
EDIT2:我纠正了将孩子置于父母之下的可能性。您实际上可以这样做,但这是假设父级尚未设置z-index。如果父母有一个z-index,那么就不可能把它放在孩子身上。