CSS實現(xiàn)照片堆疊效果的實例代碼
實現(xiàn)效果

步驟
1.初始index.html
為了建立第一張照片,也就是最上面的那張。我們只需要添加一個div,里面包含照片的img。就這么多,剩下的效果都是通過CSS來實現(xiàn)的。確保div的class為stackone。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Photo Stack</title>
<style>
* {
margin: 0;
padding: 0;
}
html,
body {
width: 100%;
height: 100%;
overflow: hidden;
}
.stackone {
--img-width: 480px;
--img-height: 320px;
border: 6px solid #fff;
float: left;
height:var(--img-height);
width: var(--img-width);
margin: 50px;
position: relative;
-webkit-box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.3);
-moz-box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.3);
box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.3);
}
.stackone img {
width: var(--img-width);
}
</style>
</head>
<body>
<div class="stackone">
<img src="../../../assets/image/landscape-4378548_960_720.jpg">
</div>
</body>
</html>
初始的效果如下:

2.The First Pseudo Element
現(xiàn)在我們添加一層底片。我們想得到的效果是:底層圖片看上去好像是在頂層照片下面。我們可以用CSS的偽類:before來實現(xiàn)。
.stackone::before {
content: "";
height:var(--img-height);
width: var(--img-width);
background: #eff4de;
border: 6px solid #fff;
-webkit-box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.3);
-moz-box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.3);
box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.3);
}
此時效果相差甚遠(yuǎn)

3.完善before
這不是我們想要的效果。如何修復(fù)?我們需要給:before加入一些定位,然后設(shè)置z-index將它放在后面。
.stackone::before {
content: "";
height:var(--img-height);
width: var(--img-width);
background: #eff4de;
border: 6px solid #fff;
position: absolute;
z-index: -1;
top: 0px;
left: -10px;
-webkit-box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.3);
-moz-box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.3);
box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.3);
-webkit-transform: rotate(-5deg);
-moz-transform: rotate(-5deg);
-o-transform: rotate(-5deg);
-ms-transform: rotate(-5deg);
transform: rotate(-5deg);
}
此時效果正常,初見端倪

4.The Second Pseudo Element
.stackone::after {
content: "";
height:var(--img-height);
width: var(--img-width);
background: lightblue;
border: 6px solid #fff;
position: absolute;
z-index: -1;
top: 5px;
left: 0px;
-webkit-box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.3);
-moz-box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.3);
box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.3);
-webkit-transform: rotate(4deg);
-moz-transform: rotate(4deg);
-o-transform: rotate(4deg);
-ms-transform: rotate(4deg);
transform: rotate(4deg);
}
最后大功告成,具有層次感:

原創(chuàng)說明
本篇文章遷移自本人于2014年12月29日 16:38:48在CSDN的博客 《css實現(xiàn)照片堆疊效果》
源博客參考翻譯自 《Use Pseudo Elements to Create an Image Stack Illusion》
Github項目源碼
相關(guān)文章

jQuery和CSS3全屏展開紙張堆疊樣式導(dǎo)航菜單特效
這是一個jQuery和CSS3實現(xiàn)全屏展開紙張堆疊樣式的導(dǎo)航菜單特效,點擊漢堡包按鈕的時候,各個子菜單會以卡片的形式堆疊排列在視口中,點擊子菜單會切換到相應(yīng)頁面2019-03-22
本特效源碼是一款基于jQuery和CSS3插件hubSlider實現(xiàn)的超酷3D堆疊式幻燈片的代碼,將各個slide堆疊在一起上下切換2016-05-17
HTML5+CSS3圖片堆疊轉(zhuǎn)瀑布流布局特效源碼
HTML5+CSS3圖片堆疊轉(zhuǎn)瀑布流布局特效源碼是一款基于CSS3+HTML5實現(xiàn)的超酷風(fēng)格堆疊相片轉(zhuǎn)瀑布流網(wǎng)格布局動畫效果代碼。需要的朋友前來下載源碼2016-04-07
jQuery+CSS3實現(xiàn)堆疊卡片樣式導(dǎo)航菜單特效源碼
本源碼是一款效果非常炫酷的基于jQuery和CSS3實現(xiàn)的堆疊卡片樣式導(dǎo)航菜單效果的代碼。點擊時各個子菜單會以卡片的形式堆疊排列在視口中2015-12-17
本代碼是一組非常有創(chuàng)意的堆疊卡片切換動畫特效。這些堆疊卡片切換效果通過點擊“確定”或“取消”按鈕,以不同的方式將最上面的卡片切換到底部2015-11-02
jQuery+CSS3實現(xiàn)的堆疊式面板切換特效源碼
是一款實現(xiàn)了以不同的尺寸由小到大的堆疊在一起,當(dāng)點擊相應(yīng)的面板后,這個面板會以過渡動畫效果擴展到全屏大小的效果代碼,本段代碼適應(yīng)于所有網(wǎng)頁使用,有興趣的朋友們可2015-09-06







