如何使用CSS3實現乙個3D相簿

2021-09-11 10:51:48 字數 2111 閱讀 2711

css3系列我已經寫過兩篇文章了,在這貼出鏈結,感興趣的同學可以看一下css3初體驗之奇技淫巧,css3 3d立方體效果-transform也不過如此

第一篇主要列出了一些常用或經典的css3技巧和方法;第二篇是乙個用css3實現的立方體例項,詳細講解了3d旋轉和transform等屬性。

本文再來利用css3屬性來編寫乙個例項,話不多說,先直接看看效果。3d相簿例項demo戳我

因為前面已經講解過一些屬性的用法,此篇文章不再贅述,只記錄這個例項的編碼過程。專案**已上傳至github,專案**github位址

直接看html布局:

class="my-container">

class="photo-wrap">

class="container">

class="img img01">

div>

class="img img02">

div>

class="img img03">

div>

class="img img04">

div>

class="img img05">

div>

class="img img06">

div>

class="img img07">

div>

class="img img08">

div>

class="img img09">

div>

div>

div>

div>

複製**

最外層的大容器根據實際情況定義樣式即可。

.my-container 複製**
.photo-wrap 複製**
perspective屬性用來啟用乙個3d空間,使其子元素都會獲得透視效果(使用了3d變換的元素,此例項中也就是相簿容器元素)。

.container 複製**
相簿容器的transform-style: preserve-3d;樣式,表示所有子元素在3d空間中呈現。

.img 複製**
現在瀏覽器看看效果:

右上圖可以看出,現在每張都固定在同乙個位置。很明顯不是我們想要的效果。但是想要達到我們預期的效果,要怎麼改變呢?

現在這些都在容器的最中心點以平面的形式展現的,要想形成乙個圓形,就要用到旋轉屬性(因為要繞著y軸旋轉,所以是rotatey)了。

這裡一共有9張圖,所以按360/9=40度為單位來分別對每張圖進行旋轉。

.img01 

.img02

.img03

.img04

.img05

.img06

.img07

.img08

.img09 複製**

增加旋轉之後,再看看效果:

我們發現這些不在乙個平面了,但是都擠在了一起,我們試著把每張都向自己的前方(translatez)移動300畫素,看看會發生什麼。

.img01 

.img02

.img03

.img04

.img05

.img06

.img07

.img08

.img09 複製**

增加旋轉和移動之後的效果:

至此,就已經達到我們預期的效果了。把每個標籤加上喜歡的**,就ok啦!

想要讓這個相簿動起來,加乙個動畫就好了。

@keyframes rotatey360 

to }複製**

然後給「相簿容器」container元素新增動畫屬性:

animation: rotatey360 15s

ease-in-out

infinite;複製**

最終,大功告成:

**已經上傳至github。專案**github位址,喜歡的童鞋們不妨點個star呀!謝謝~

使用CSS3實現乙個3D相簿

css3系列我已經寫過兩篇文章,感興趣的同學可以先看一下 第一篇主要列出了一些常用或經典的css3技巧和方法 第二篇是乙個用css3實現的立方體例項,詳細講解了3d旋轉和transform等屬性。本文再來利用css3屬性來編寫乙個例項,話不多說,先直接看看效果。因為前面已經講解過一些屬性的用法,此篇...

如何使用CSS3實現乙個3D商品標籤

使用3d緞帶形狀的標籤是常見的乙個設計模式,用在商品折扣 文章標題或 推薦資訊上,來突出顯示重點內容,吸引使用者視覺焦點。實現的方法有2種,一種是使用背景,一種是使用三角形的css3偽元素。本文介紹第2種方法,使用乙個最簡化的例項來講解如何實現這個效果 上面的介面是一張簡化的商品卡片,包含標籤和商品...

用HTML5和CSS3實現3D立體旋轉相簿

很快又到了5.20了,是不是應該要給女朋友或者正在追求的妹子一點小驚喜,總說我們程式設計師不懂浪漫,今天的這篇部落格教大家如何實現3d立體相簿,趕緊類製作我們程式設計師的浪漫吧!html lang en charset utf 8 name viewport content width device...