我正在尝试为网站创建不均匀的阴影效果,请参阅下面我需要实现的示例:
不幸的是,我认为这不能用 CSS3 来完成,据我所知,box-shadow 属性只能用于创建均匀分布的阴影。
但是,我对 CSS3/HTML5 的了解不是很好,所以我想知道是否有人知道如何在不使用我宁愿避免的图像/额外 div/相对和绝对定位的情况下实现这一目标?
这是我最接近您的图像预览的内容,您可以将它们包装在定位的相对 div 中并相应地设置位置
HTML
<div class="container"></div>
<div class="shadow"></div>
CSS
.container {
width: 300px;
height: 200px;
margin: 50px;
background-color: #eeeeee;
z-index: 1;
}
.shadow {
-ms-transform: rotate(2deg); /* IE 9 */
-webkit-transform: rotate(2deg); /* Safari and Chrome */
-o-transform: rotate(2deg); /* Opera */
-moz-transform: rotate(2deg); /* Firefox */
box-shadow: 0 6px 16px -6px black;
height: 20px;
width: 300px;
position: absolute;
top: 225px;
z-index: -1;
left: 50px;
}
我能想到的最好的办法是在你的 div 后面放置一个伪元素:
div::after{
content:"";
display:block;
transform:rotate(5deg);
box-shadow:1px 5px 50px #444;
z-index:-1;
}
我想您想对这些值进行一些调整,并尝试尽可能接近您的原始值。
是的,您可以使用一些属性。IE:
html:
<div class="main">
<div class="shadow-phantom">
</div>
</div>
CSS:
.main {
width:100px;
height:100px;
background-color:#e1e1e1;
margin:10px auto;
}
.shadow-phantom {
-webkit-border-radius: 12px 110px 20px 25px;
border-radius: 12px 110px 20px 25px;
margin: -4px 0px 0px -0px;
-moz-background-clip: padding;
-webkit-background-clip: padding-box; background-clip: padding-box;
-webkit-box-shadow: 7px 7px 10px 0px #AAA;
box-shadow: 7px 7px 10px 0px #AAA;
width:90px;
height:100px;
position:absolute;
z-index:-1;
-webkit-transform: rotate(5.5deg);
-moz-transform: rotate(5.5deg);
-ms-transform: rotate(5.5deg);
-o-transform: rotate(5.5deg);
transform: rotate(5.5deg);
}
检查这个小提琴看看它在行动:http: //jsfiddle.net/wandarkaf/MKV4Q/