CSS3 3D制作實戰(zhàn)案例分析

一、前言
上一節(jié),介紹了基礎的CSS3 3D動畫原理實現(xiàn),也舉了一個小小的例子來演示,但是有朋友跟我私信說想看看一些關于CSS3 3D的實例,所以在這里為了滿足一下大家的需求,同時也為了以后能夠更好的鞏固CSS3 3D的知識,所以在這里寫下這篇博文,希望能夠幫助你更好的理解3D的制作和實現(xiàn)原理,同時也歡迎各位小伙伴對文中的錯誤給予指正
二、入門案例分析
這里先說一說我的規(guī)劃,我打算先從入門級的案例入手,然后依次遞推,最后要達到的效果是,理解完所有的例子的設計思路,基本上CSS3-3D制作就能夠隨心所欲。
1、矩形圖片翻滾效果
這個效果比較簡單,所以在這里就不多做解釋了,先來復習一下上一節(jié)說的要創(chuàng)建一個3D環(huán)境,我們需要創(chuàng)建一個“燈光”,“舞臺”,“演員”(相當于perspective、preserve-3d、image),不清楚的小伙伴請看這里,具體的代碼如下:
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Document</title>
- <style type="text/css">
- div div img{
- width:300px;
- height:300px;
- position:absolute;
- /* -webkit-transition: all 0.8s; */
- }
- div div{
- -webkit-transition: all 1s;
- }
- #img1{
- -webkit-transform: translateZ(150px);
- /* -webkit-transition: all 0.8s; */
- }
- #img2{
- -webkit-transform: rotateX(-90deg) translateZ(150px);
- /* -webkit-transition: all 0.8s; */
- }
- #img3{
- -webkit-transform: rotateZ(180deg) translateZ(-150px);
- }
- #img4{
- -webkit-transform: rotateX(90deg) translateZ(150px);
- }
- #img5{
- -webkit-transform:rotateY(90deg) translateZ(150px);
- }
- #img6{
- -webkit-transform: rotateY(-90deg) translateZ(150px);
- }
- /* div div:hover{
- -webkit-transform: rotateX(270deg);
- } */
- </style>
- </head>
- <body>
- <div style="margin-left: 100px;height:300px;width:300px;position:absolute;perspective: 1000px;">
- <div id="box" style="transform-style: preserve-3d;height:300px;width:300px;position: relative;">
- <img id="img1" src="1.jpg" />
- <img id="img2" src="2.jpg" />
- <img id="img3" src="3.jpg" />
- <img id="img4" src="4.jpg" />
- <img id="img5" src="5.jpg" />
- <img id="img6" src="6.jpg" />
- </div>
- </div>
- <div style="margin-left: 700px;margin-top: 100px;">
- <input id="btn1" type="button" value="向上翻轉(zhuǎn)90度" />
- <input id="btn2" type="button" name="" value="向左翻轉(zhuǎn)90度" />
- <input id="btn3" type="button" value="向右翻轉(zhuǎn)90度" />
- <input id="btn4" type="button" name="" value="向下翻轉(zhuǎn)90度" />
- </div>
- <script type="text/javascript" src="http://cdn.bootcss.com/jquery/3.1.0/jquery.min.js"></script>
- <script>
- var x=0;
- var y=0;
- var box=$("#box");
- $('#btn1').on("click",function(){
- var value=90+x*90;
- box.css("-webkit-transform","rotateX("+value+"deg)");
- x++;
- });
- $('#btn2').on("click",function(){
- var value=y*90+90;
- box.css("-webkit-transform","rotateY("+value+"deg)");
- y++;
- });
- $('#btn3').on("click",function(){
- y--;
- var value=y*90;
- box.css("-webkit-transform","rotateX("+value+"deg)");
- });
- $('#btn4').on("click",function(){
- x--;
- var value=x*90;
- box.css("-webkit-transform","rotateX("+value+"deg)");
- });
- </script>
- </body>
- </html>
分析
雖然這個思路淺顯易懂,但是作為本文的第一個例子還是想為大家盡量清晰的分析清楚,
1、首先我們創(chuàng)建了一個“燈光”persepctive用來產(chǎn)生3D變化的效果的
2、然后我們創(chuàng)建了一個“舞臺” transform-style: preserve-3d
3、創(chuàng)建“演員”,這里的演員指的是每張的圖片,在創(chuàng)建的時候要根據(jù)你最終要呈現(xiàn)的形態(tài)進行建模,也即是平移旋轉(zhuǎn)之類的操作
腳本的編寫:在編寫腳本的時候有一點是需要注意的,當你把圖片旋轉(zhuǎn)90度的時候,如果第二次還是設置90度,那么這個圖片是不會發(fā)生變化的,因為圖片的變化(旋轉(zhuǎn))是以初始位置為基準的,所以相對于初始位置兩次的90度都是一樣的所以沒有任何的效果。這個在制作的時候,留意一下即可
2、矩形自動旋轉(zhuǎn)效果
按照上面的例子進行整改,要實現(xiàn)自動的旋轉(zhuǎn)其實就是定義一個keyframes的運動規(guī)則,然后在把這個keyframes套接到animation中,即可實現(xiàn)CSS自動旋轉(zhuǎn)的功能
部分的CSS3代碼
- div div{
- animation:route 10s infinite ease-in-out;
- }
- //keyframes運動規(guī)則
- @-webkit-keyframes route{
- 0%{
- -webkit-transform:rotateX(90deg);
- }
- 25%{
- -webkit-transform:rotateX(180deg) rotateY(90deg) rotateZ(90deg);
- }
- 50%{
- -webkit-transform:rotateX(270deg) rotateY(180deg) rotateZ(180deg);
- }
- 75%{
- -webkit-transform:rotateX(360deg) rotateY(270deg) rotateZ(270deg);
- }
- }
展示效果:
三、CSS3 3D使用特效制作與分析
1、模擬卡牌翻轉(zhuǎn)效果
這個我就不多說怎樣制作了,先上效果,圖片是來源于蝸牛的,如有侵犯請告知
這個雖然是歸類到3D的范圍內(nèi),但是在使用的時候由于不需要產(chǎn)生平行四邊形的變換效果(這個的具體效果詳見博主的另外一篇博文),所以不需要使用perspective這個屬性,但是確實需要使用到CSS3 3D常見效果中的翻轉(zhuǎn)屬性(rotate[X,Y,Z]),這個的具體原理也是簡單,但是在使用的時候有兩點是需要注意的。
一)、因為旋轉(zhuǎn)是相對于卡牌的整體的旋轉(zhuǎn),也就是兩個面都要旋轉(zhuǎn),所以hover事件要相對于卡牌整體,如果是相對于某一個面的話,那么會出現(xiàn)一個面旋轉(zhuǎn),而另外一個面不旋轉(zhuǎn)的現(xiàn)象
二)、在制作的過程中使用了一個比較少見的屬性:backface-visibility,這個屬性是為了見圖片的背面設置為不可見,從而達到實現(xiàn)翻轉(zhuǎn)的效果
具體代碼見文章最后
2、CSS3 3D輪播
說到CSS3 3D輪播主要我們可以分成這樣的三類,一類是自動播放的輪播圖,另外一類是響應點擊事件的輪播圖,第三類是兩者的結(jié)合,即自動播放又響應點擊事件,這里我們主要討論的是前兩者,第三類比較復雜這里我們就不多做解釋,以后有機會再來跟大家探討探討
2.1 自動輪播圖
這個的原理我們已經(jīng)在前面中多次提到了,但是各位要注意一個地方,在keyframes中設置如:
@keyframes test{
o%,
12.5%:{………………}
}
這樣的一種形式可以實現(xiàn)輪播圖的短暫停留。
好了看一下效果了:
2.2 CSS3觸發(fā)輪播圖
主要的原理是通過判斷點擊的次數(shù),然后是給圖片父類添加旋轉(zhuǎn)的屬性,這樣這個功能就實現(xiàn)了,我們對上面的例子進行改進,效果如下所示
四、代碼下載
這一次代碼進行了遷移,從原本自己的服務器遷移到了git服務器,git的下載地址:https://github.com/leslieSie/CSS3_example/tree/develop
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
原文鏈接:http://www.cnblogs.com/st-leslie/p/5791714.html
相關文章
- 這篇文章主要介紹了CSS3系列之3D制作方法詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-08-14