利用css制作3D照片墻效果

利用css制作3D照片墻,具體代碼如下所示:
<!doctype html> <html> <head> <meta charset="utf-8"> <title>無標(biāo)題文檔</title> </head> <body> <div> <img src="#"/> <img src="#"/> <img src="#"/> <img src="#"/> <img src="#"/> <img src="#"/> <img src="#"/> <img src="#"/> </div> </body> </html>
以上代碼是準(zhǔn)備工作,在html代碼的body主體中放了一個(gè)div,里面包著你想要顯示在照片墻上的照片,數(shù)量可以任意。接著開始著手寫樣式。
body{perspective: 5800px;}
以上代碼是為照片墻設(shè)置一個(gè)足夠大的3D視距,至少能容下所有圖片的運(yùn)動軌跡。
img{position:absolute;height:480px;width:320px;}
以上代碼是給每個(gè)圖片設(shè)置樣式,給圖片一個(gè)絕對定位,使其可以被任意地控制位置,此時(shí)圖片會重疊在一起,寬高取決于照片墻中的的圖片的具體尺寸,當(dāng)然你也可以設(shè)置大小,320*480是我舉的一個(gè)例子。
img:nth-child(1){transform: translateZ(500px);} img:nth-child(2){transform: translateZ(-500px);} img:nth-child(3){transform:rotateY(45deg) translateZ(-500px);} img:nth-child(4){transform:rotateY(45deg) translateZ(500px);} img:nth-child(5){transform:rotateY(-45deg) translateZ(500px);} img:nth-child(6){transform:rotateY(-45deg) translateZ(-500px);} img:nth-child(7){transform:rotateY(90deg) translateZ(500px);} img:nth-child(8){transform:rotateY(90deg) translateZ(-500px);}
以上代碼是給每個(gè)圖片單獨(dú)設(shè)置樣式,使每張圖片繞自身Y軸旋轉(zhuǎn)一定角度,角度取決于你放了多少張圖片,有n張圖,則每張圖片依次旋轉(zhuǎn)360/n度,比如這里我放了8張圖,那么每張圖應(yīng)依次比上一張圖片多旋轉(zhuǎn)360/8=45度,層層遞進(jìn),如0度、45度、90度、135度、180度、225度、270度、315度,再使每張圖片向自身的Z軸(此時(shí)每張圖片的Z軸方向都已改變)都設(shè)置一個(gè)正向(全為負(fù)值也可)的等距離的位移,使其擴(kuò)散開,我這里的寫法效果也一樣,旋轉(zhuǎn)45度位移 - 500px其實(shí)和旋轉(zhuǎn)225度位移500px效果是一樣的。
俯視圖:先自身旋轉(zhuǎn),再向各個(gè)方向擴(kuò)散。
一定要先旋轉(zhuǎn),使自身Z軸方向改變再位移,否則會發(fā)生如下情況:
先位移后再旋轉(zhuǎn),由于先位移時(shí)所有圖片的z軸都為初始方向,會使得所有圖片同向位移一段距離,仍然疊在一起,再旋轉(zhuǎn)時(shí)也會擠在一起。
接著
div{margin:0 auto;margin-top:600px; transform-style: preserve-3d; animation:zhuan 6s linear infinite;height:480px;width:320px;} @keyframes zhuan{ 0%{transform:rotateX(-15deg) rotateY(0);} 100%{transform: rotateX(-15deg) rotateY(360deg);} }
最后一步:給包著所有圖片的div設(shè)置繞著初始位置旋轉(zhuǎn)的動畫效果即rotateY(360deg),這里要注意是給div設(shè)置動畫,而不是給圖片,否則會變成“自轉(zhuǎn)”,我們需要的效果是“公轉(zhuǎn)”,設(shè)置margin使其在瀏覽器中間顯示,方便觀察,設(shè)置3d視角,接著給動畫設(shè)置過渡時(shí)間6s(旋轉(zhuǎn)快慢,可更改),再設(shè)置infinite使其無限循環(huán),為了方便觀察我使整個(gè)div繞其x軸旋轉(zhuǎn)-15度。
效果圖
總結(jié)
以上所述是小編給大家介紹的利用css制作3D照片墻效果,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!
相關(guān)文章
- 這篇文章主要介紹了純css實(shí)現(xiàn)照片墻3D效果的示例代碼,可以實(shí)現(xiàn)鼠標(biāo)經(jīng)過圖片實(shí)現(xiàn)改變,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-11-13
- 下面小編就為大家?guī)硪黄狢SS3制作漂亮的照片墻的實(shí)現(xiàn)代碼。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-06-08
- 這篇文章主要為大家詳細(xì)介紹了CSS3制作漂亮的照片墻的具體步驟,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-06-07
CSS3實(shí)現(xiàn)漂亮的照片墻效果的簡單實(shí)例(推薦)
下面小編就為大家?guī)硪黄狢SS3實(shí)現(xiàn)漂亮的照片墻效果的簡單實(shí)例(推薦)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-06-03CSS3實(shí)現(xiàn)鼠標(biāo)懸停照片墻放大特效源碼
CSS3實(shí)現(xiàn)鼠標(biāo)懸停照片墻放大特效源碼是一款圖片默認(rèn)3行4列排列,鼠標(biāo)經(jīng)過突出方法顯示圖片。大家對此效果非常心動不妨前來下載使用2016-04-13- 這篇文章主要介紹了純css3實(shí)現(xiàn)照片墻效果,鼠標(biāo)懸浮時(shí)旋轉(zhuǎn)放大并擺正,主要使用到的css3屬性有:transition、transform(scale、rotateZ)、box-shadow以及z-index,推薦給2014-12-26
- 本文給大家推薦的是使用CSS3簡單實(shí)現(xiàn)照片墻效果的代碼,非常簡單,也很實(shí)用,需要的朋友可以參考下2014-12-12
- 這是一款基于CSS3實(shí)現(xiàn)的懸掛照片墻效果源碼,是一款基于CSS3 transform 屬性制作懸掛的照片墻效果代碼2014-09-03
jquery+css3實(shí)現(xiàn)非常大氣的瀑布流照片墻特效
一款效果非??岬恼掌瑝ψ髌?,展示相片的效果非常大氣2014-03-05