CSS3 3D相冊

3D album.gif

今天來做一個(gè)基于CSS3 3D屬性的3D相冊效果留凭。

1 基本布局

首先來完成基本布局佃扼,從效果圖中可以看到,所有圖片一開始均位于同一位置蔼夜,然后經(jīng)過不同的角度的旋轉(zhuǎn)以及平移到不同的位置兼耀,達(dá)到一個(gè)"旋轉(zhuǎn)散開"的效果。所以基本的思路就是:

  • 所有圖片定位到頁面中同一位置
  • 遍歷圖片求冷,利用transform屬性進(jìn)行旋轉(zhuǎn)瘤运、平移,加上transition制造動(dòng)畫效果
  • 調(diào)整perspective,改變視角

所有首先來完成基本布局:

<!DOCTYPE html>
<html>
    <head>
        <meta charst="utf-8">
        <title>3D相冊</title>

        <style>
            * {
                margin: 0px;
                padding: 0px;
            }
            body {
                background-color: #000;
            }

            .images {
                width: 100px;
                height: 100px;
                margin: 150px auto;
                position: relative;
            }

            .images img {
                position: absolute;
                box-shadow: 0px 0px 8px #eee;
            }
        </style>
    </head>

    <body>
        <div class="container">
            <div id="warp" class="images">
                <img src="images/01.png">
                <img src="images/02.png">
                <img src="images/03.png">
                <img src="images/04.png">
                <img src="images/05.png">
                <img src="images/06.png">
                <img src="images/07.png">
                <img src="images/08.png">
                <img src="images/09.png">
                <img src="images/10.png">
                <img src="images/11.png">
            </div>
        </div>
    </body>
</html>
3d_album1.png

現(xiàn)在所有圖片都重疊到了一起匠题。

2 旋轉(zhuǎn)拯坟、平移

接下來我們需要對各個(gè)圖片進(jìn)行旋轉(zhuǎn)、平移韭山。從圖中可以看到郁季,所有的圖片都是繞Y軸進(jìn)行了一定的旋轉(zhuǎn),所有首先來給各個(gè)圖片加上一個(gè)旋轉(zhuǎn)效果钱磅,之于旋轉(zhuǎn)角度則各個(gè)圖片平分:

<script>
    window.onload = function() {
        var wrap = document.getElementById('wrap');
        var images = document.getElementsByTagName("img");
        var length = images.length;
        var deg = 360 / length;
        for(var i = 0; i < length; i++) {
          var transform = "rotateY(" + deg * i + "deg) ";
          images[i].style.transform = transform;
        } 
    }
</script>
3d_album2.png

可以看到梦裂,圖片已經(jīng)出現(xiàn)了不同程度的旋轉(zhuǎn),但是依然是重疊在一起的盖淡。所以接下來就是讓各個(gè)圖片"分開":按Z軸方向進(jìn)行平移:

    window.onload = function() {
        var wrap = document.getElementById('wrap');
        var images = document.getElementsByTagName("img");
        var length = images.length;
        var deg = 360 / length;
        for(var i = 0; i < length; i++) {
          var transform = "rotateY(" + deg * i + "deg) tranlateZ(240px)";
          images[i].style.transform = transform;
        } 
    }
3d_album3.png

可以看到年柠,圖片進(jìn)行了平移,也達(dá)到了"展開"的效果禁舷,但由于均處于同一平面彪杉,從用戶角度觀察毅往,依然存在重疊。

3 改變視角

為了解決重疊問題派近,需要改變視角攀唯,這時(shí)就需要用到perspective + transform

  • 利用perspective指定視角距離
  • 然后通過旋轉(zhuǎn)改變視角
  • 另外由于視角的改變,在進(jìn)行transform時(shí)需要設(shè)定transform-style
.container {
  perspective: 1000px; /*perspective屬性指定了觀察者與Z=0平面的距離*/

}

.images {
  width: 100px;
  height: 100px;
  margin: 150px auto;
  position: relative;
  transform: rotateX(-50deg) ;
  transform-style: preserve-3d;
}
3d_album4.png

可以看到渴丸,圖片已經(jīng)均勻展開了侯嘀。

4 動(dòng)畫效果

最后我們再來給圖片的運(yùn)動(dòng)加上動(dòng)畫效果:transition屬性上場了。為了然動(dòng)畫看起來不凌亂谱轨,我們可以通過transition中的延遲來完成:

window.onload = function() {
  var wrap = document.getElementById('wrap');
  var images = document.getElementsByTagName("img");
  var length = images.length;
  var deg = 360 / length;
  for(var i = 0; i < length; i++) {
    var transform = "rotateY(" + deg * i + "deg) translateZ(240px)";
    var transition = "1s " + 0.2 * i + "s";  // 通過延遲讓圖片運(yùn)動(dòng)排隊(duì)
    images[i].style.transform = transform;
    images[length - i - 1].style.transition = transition;
  } 
}

大功告成戒幔!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市土童,隨后出現(xiàn)的幾起案子诗茎,更是在濱河造成了極大的恐慌,老刑警劉巖献汗,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件敢订,死亡現(xiàn)場離奇詭異,居然都是意外死亡罢吃,警方通過查閱死者的電腦和手機(jī)楚午,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來尿招,“玉大人矾柜,你說我怎么就攤上這事【兔眨” “怎么了怪蔑?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長丧荐。 經(jīng)常有香客問我饮睬,道長,這世上最難降的妖魔是什么篮奄? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮割去,結(jié)果婚禮上窟却,老公的妹妹穿的比我還像新娘。我一直安慰自己呻逆,他們只是感情好夸赫,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著咖城,像睡著了一般茬腿。 火紅的嫁衣襯著肌膚如雪呼奢。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天切平,我揣著相機(jī)與錄音握础,去河邊找鬼。 笑死悴品,一個(gè)胖子當(dāng)著我的面吹牛禀综,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播苔严,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼定枷,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了届氢?” 一聲冷哼從身側(cè)響起欠窒,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎退子,沒想到半個(gè)月后岖妄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡絮供,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年衣吠,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片壤靶。...
    茶點(diǎn)故事閱讀 40,040評論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡缚俏,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出贮乳,到底是詐尸還是另有隱情忧换,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布向拆,位于F島的核電站亚茬,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏浓恳。R本人自食惡果不足惜刹缝,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望颈将。 院中可真熱鬧梢夯,春花似錦、人聲如沸晴圾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至人乓,卻和暖如春勤篮,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背色罚。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工碰缔, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人保屯。 一個(gè)月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓手负,卻偏偏與公主長得像,于是被迫代替她去往敵國和親姑尺。 傳聞我的和親對象是個(gè)殘疾皇子竟终,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 看了很多視頻、文章切蟋,最后卻通通忘記了统捶,別人的知識依舊是別人的,自己卻什么都沒獲得柄粹。此系列文章旨在加深自己的印象喘鸟,因...
    DCbryant閱讀 1,864評論 0 4
  • css3漸變生成工具 文本 text-overflow clip 隱藏超出文本 ellipsis 超出部分使用省略...
    DeeJay_Y閱讀 1,124評論 0 0
  • 選擇qi:是表達(dá)式 標(biāo)簽選擇器 類選擇器 屬性選擇器 繼承屬性: color,font驻右,text-align什黑,li...
    love2013閱讀 2,315評論 0 11
  • 今天天氣好晴朗處處好風(fēng)光伴隨著好天氣的到來心情都更加明朗了呢是不是該學(xué)點(diǎn)燒腦的內(nèi)容了呢傻球也要出來曬曬太陽咯~ C...
    Iris_mao閱讀 617評論 0 2
  • ————羽月痕 古道長亭山外山, 風(fēng)吹稻香說豐年堪夭。 辭去萬里秋不度愕把, 韻得枯黃一片天。
    羽月痕閱讀 252評論 0 2