7

我正在尝试为网站创建不均匀的阴影效果,请参阅下面我需要实现的示例:

在此处输入图像描述

不幸的是,我认为这不能用 CSS3 来完成,据我所知,box-shadow 属性只能用于创建均匀分布的阴影。

但是,我对 CSS3/HTML5 的了解不是很好,所以我想知道是否有人知道如何在不使用我宁愿避免的图像/额外 div/相对和绝对定位的情况下实现这一目标?

4

3 回答 3

4

这是我最接近您的图像预览的内容,您可以将它们包装在定位的相对 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;
}
于 2012-11-15T15:10:09.527 回答
3

我能想到的最好的办法是在你的 div 后面放置一个伪元素:

div::after{
    content:"";
    display:block;
    transform:rotate(5deg);
    box-shadow:1px 5px 50px #444;
    z-index:-1;
}​

演示

我想您想对这些值进行一些调整,并尝试尽可能接近您的原始值。

于 2012-11-15T15:05:22.560 回答
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/

于 2012-11-15T15:23:30.497 回答