我使用:before
和:after
个伪元素在我的文本卡上创建自定义形状的阴影。我使用这样的css(jsFiddle):
.card {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
float: left;
width: 310px;
height: 310px;
text-align: center;
color: black;
padding-top: 35px;
border: 1px solid black;
}
.card h1 {
font-size: 15px;
font-weight: bold;
line-height: 17px;
font-style: italic;
margin: 0;
}
.card .text {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
-webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
-moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
margin: 8px auto;
padding: 15px 10px;
font-size: 13px;
text-align: left;
line-height: 14px;
height: 170px;
width: 280px;
background: white;
border-radius: 5px;
position: relative;
color: #222222;
}
.card .text:before,
.card .text:after {
-webkit-box-shadow: 0 0 20px rgba(0, 0, 0, 0.8);
-moz-box-shadow: 0 0 20px rgba(0, 0, 0, 0.8);
box-shadow: 0 0 20px rgba(0, 0, 0, 0.8);
content: "";
display: block;
position: absolute;
z-index: -1;
top: 50%;
bottom: 0;
left: 40px;
right: 40px;
border-radius: 100px/10px;
}
.card .text:after {
-webkit-transform: skew(8deg) rotate(3deg);
-moz-transform: skew(8deg) rotate(3deg);
transform: skew(8deg) rotate(3deg);
right: 10px; left: auto;
}
到目前为止一切顺利。当我向.card
元素添加背景时,问题就开始了,例如background: #0aabff
(jsFiddle #2)。注意,.text
周围的伪元素阴影消失了。
我尝试通过将z-index
添加到我的.text
元素来解决这个问题,但是,不管是在我的.text
元素后面,我的:before, :after
都显示在它之前,尽管拥有z-index: -1;
属性(jsFiddle #3)。
这对我来说没什么意义,我仍然不知道如何解决这类问题。也许,有某种解决方法,或者另一种方式来获得我需要的那种阴影(原始想法是css-tricks.com
的礼貌);
答案 0 :(得分:2)
您可以在z-index
课程中添加-1
低于card
的费用。
.card {
z-index:-2;
position:relative;
}
这是因为z-index
的{{1}}低于pseudo-elements
的默认z-index
值。默认情况下是card
,您可能会看到阴影。当您添加background transparent
时,它会位于background-color
。
请参阅http://jsfiddle.net/71thws1a/3/
问题在于@Doodlebunch
所述的css堆叠