【发布时间】:2013-04-10 15:11:04
【问题描述】:
我一直在玩一些 CSS3 投影效果。我非常喜欢“抬高的角落”效果,但是在尝试为元素添加不透明度时遇到了问题。我的问题是:有没有办法在不透明的元素上创建“提升角”效果?
.drop-shadow{
position:relative;
float:left;
width:40%;
padding:1em;
margin:2em 10px 4em;
background:#fff;
-webkit-box-shadow:0 1px 4px rgba(0, 0, 0, 0.3), 0 0 40px rgba(0, 0, 0, 0.1) inset;
-moz-box-shadow:0 1px 4px rgba(0, 0, 0, 0.3), 0 0 40px rgba(0, 0, 0, 0.1) inset;
box-shadow:0 1px 4px rgba(0, 0, 0, 0.3), 0 0 40px rgba(0, 0, 0, 0.1) inset;
}
.drop-shadow:before,
.drop-shadow:after{
content:"";
position:absolute;
z-index:-2;
}
.lifted{
-moz-border-radius:4px;
border-radius:4px;
}
.lifted:before,
.lifted:after{
bottom:15px;
left:10px;
width:50%;
height:20%;
max-width:300px;
max-height:100px;
-webkit-box-shadow:0 15px 10px rgba(0, 0, 0, 0.7);
-moz-box-shadow:0 15px 10px rgba(0, 0, 0, 0.7);
box-shadow:0 15px 10px rgba(0, 0, 0, 0.7);
-webkit-transform:rotate(-3deg);
-moz-transform:rotate(-3deg);
-ms-transform:rotate(-3deg);
-o-transform:rotate(-3deg);
transform:rotate(-3deg);
}
.lifted:after{
right:10px;
left:auto;
-webkit-transform:rotate(3deg);
-moz-transform:rotate(3deg);
-ms-transform:rotate(3deg);
-o-transform:rotate(3deg);
transform:rotate(3deg);
}
【问题讨论】:
-
不透明元素会产生相当复杂的阴影(尝试将镜头放在一张纸上方)。 IMO,这是您应该使用图像而不是 CSS 的情况。
-
我也想知道这个问题的答案.. 但恐怕这对于 css 来说是不可能的
-
酷!对我来说似乎是一个错误。为什么
opacity会导致在顶部渲染阴影? -
我不知道。但我得说,这看起来很棒!
-
@SvenBieder, :-) 据我所知并没有。请参阅此update,它甚至不使用
:after。将opacity设置为< 1,黑色的 div 出现在前面(红色的部分不太明显,它完全在顶部,用 Firebug 测试过)。也许我只是不明白你的意思。