css3 实现 drop-box

我们可以通过 CSS3 中的box-shdowtransform 来实现酷炫的Drop-shadow效果:

drop shadow 阴影

下面记录一下是实现步骤。

DOM 结构

我们仅仅需要一个div作为主体,阴影可借助伪元素:before:after来实现。所以我们的 DOM 结构非常简单。

1
<div class="drop-shadow">drop shadow effect</div>

添加阴影

给两个伪元素添加阴影,暂时先搞定左边,右边的阴影稍后再处理。

1
2
3
4
5
6
7
8
9
10
11
.drop-shadow:before,
.drop-shadow:after {
content: "";
position: absolute;
z-index: -1;
bottom: 15px;
left: 10px;
width: 50%;
height: 20%;
box-shadow: 0 15px 20px rgba(125, 125, 125, 0.8);
}

现在,我们看到的是这个样子:

添加左边的阴影

调整阴影

下面我们再通过transform来旋转一下阴影的角度,这样看起来更有立体感。

1
2
3
4
5
6
7
8
9
10
11
12
.drop-shadow:before,
.drop-shadow:after {
content: "";
position: absolute;
z-index: -1;
bottom: 15px;
left: 10px;
width: 50%;
height: 20%;
box-shadow: 0 15px 20px rgba(125, 125, 125, 0.8);
transform: rotate(-5deg);
}

这样我们就完成了一边的制作了:

使用transform来是阴影倾斜

调整阴影

接下来,我们只需要把其中一个阴影挪到右边即可。

1
2
3
4
5
.drop-shadow:after {
right: 10px;
left: auto;
transform: rotate(5deg);
}

这样,左边的阴影就翻转到了右边,大功告成:

最终的效果图