欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

  發(fā)布時(shí)間:2016-09-18 09:54:17   作者:佚名   我要評(píng)論
這篇文章主要為大家詳細(xì)分析了CSS3 3D制作實(shí)戰(zhàn)案例分析,更好的鞏固CSS3 3D的知識(shí),理解3D的制作和實(shí)現(xiàn)原理,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

一、前言
 
上一節(jié),介紹了基礎(chǔ)的CSS3 3D動(dòng)畫原理實(shí)現(xiàn),也舉了一個(gè)小小的例子來演示,但是有朋友跟我私信說想看看一些關(guān)于CSS3 3D的實(shí)例,所以在這里為了滿足一下大家的需求,同時(shí)也為了以后能夠更好的鞏固CSS3 3D的知識(shí),所以在這里寫下這篇博文,希望能夠幫助你更好的理解3D的制作和實(shí)現(xiàn)原理,同時(shí)也歡迎各位小伙伴對(duì)文中的錯(cuò)誤給予指正 
 
二、入門案例分析
 
這里先說一說我的規(guī)劃,我打算先從入門級(jí)的案例入手,然后依次遞推,最后要達(dá)到的效果是,理解完所有的例子的設(shè)計(jì)思路,基本上CSS3-3D制作就能夠隨心所欲。
 
1、矩形圖片翻滾效果
 
這個(gè)效果比較簡(jiǎn)單,所以在這里就不多做解釋了,先來復(fù)習(xí)一下上一節(jié)說的要?jiǎng)?chuàng)建一個(gè)3D環(huán)境,我們需要?jiǎng)?chuàng)建一個(gè)“燈光”,“舞臺(tái)”,“演員”(相當(dāng)于perspective、preserve-3d、image),不清楚的小伙伴請(qǐng)看這里,具體的代碼如下:

XML/HTML Code復(fù)制內(nèi)容到剪貼板
  1. <!DOCTYPE html>  
  2. <html lang="en">  
  3. <head>  
  4.     <meta charset="UTF-8">  
  5.     <title>Document</title>  
  6.     <style type="text/css">  
  7.         div div img{   
  8.             width:300px;   
  9.             height:300px;   
  10.             position:absolute;   
  11.             /* -webkit-transition: all 0.8s; */   
  12.         }   
  13.         div div{   
  14.             -webkit-transition: all 1s;   
  15.         }   
  16.         #img1{   
  17.             -webkit-transform: translateZ(150px);   
  18.             /* -webkit-transition: all 0.8s; */   
  19.         }   
  20.         #img2{   
  21.             -webkit-transform: rotateX(-90deg) translateZ(150px);   
  22.             /* -webkit-transition: all 0.8s; */   
  23.         }   
  24.         #img3{   
  25.             -webkit-transform: rotateZ(180deg) translateZ(-150px);   
  26.         }   
  27.         #img4{   
  28.             -webkit-transform: rotateX(90deg) translateZ(150px);   
  29.         }   
  30.         #img5{   
  31.             -webkit-transform:rotateY(90deg) translateZ(150px);   
  32.         }   
  33.         #img6{   
  34.             -webkit-transform: rotateY(-90deg) translateZ(150px);   
  35.         }   
  36.         /* div div:hover{   
  37.             -webkit-transform: rotateX(270deg);   
  38.         } */   
  39.     </style>  
  40. </head>  
  41. <body>  
  42.     <div style="margin-left: 100px;height:300px;width:300px;position:absolute;perspective: 1000px;">  
  43.         <div id="box" style="transform-style: preserve-3d;height:300px;width:300px;position: relative;">  
  44.             <img id="img1" src="1.jpg" />  
  45.             <img id="img2" src="2.jpg" />  
  46.             <img id="img3" src="3.jpg" />  
  47.             <img id="img4" src="4.jpg" />  
  48.             <img id="img5" src="5.jpg" />  
  49.             <img id="img6" src="6.jpg" />  
  50.         </div>  
  51.     </div>  
  52.     <div style="margin-left: 700px;margin-top: 100px;">  
  53.         <input id="btn1" type="button" value="向上翻轉(zhuǎn)90度" />  
  54.         <input id="btn2" type="button" name="" value="向左翻轉(zhuǎn)90度" />  
  55.         <input id="btn3" type="button" value="向右翻轉(zhuǎn)90度" />  
  56.         <input id="btn4" type="button" name="" value="向下翻轉(zhuǎn)90度" />  
  57.     </div>  
  58.     <script type="text/javascript" src="http://cdn.bootcss.com/jquery/3.1.0/jquery.min.js"></script>  
  59.     <script>  
  60.         var x=0;   
  61.         var y=0;   
  62.         var box=$("#box");   
  63.         $('#btn1').on("click",function(){   
  64.             var value=90+x*90;   
  65.             box.css("-webkit-transform","rotateX("+value+"deg)");   
  66.             x++;   
  67.         });   
  68.         $('#btn2').on("click",function(){   
  69.             var value=y*90+90;   
  70.             box.css("-webkit-transform","rotateY("+value+"deg)");   
  71.             y++;   
  72.         });   
  73.         $('#btn3').on("click",function(){   
  74.             y--;   
  75.             var value=y*90;   
  76.             box.css("-webkit-transform","rotateX("+value+"deg)");   
  77.   
  78.         });   
  79.         $('#btn4').on("click",function(){   
  80.             x--;   
  81.             var value=x*90;   
  82.             box.css("-webkit-transform","rotateX("+value+"deg)");   
  83.                
  84.         });   
  85.     </script>  
  86. </body>  
  87. </html>    
  88.   

分析
 
雖然這個(gè)思路淺顯易懂,但是作為本文的第一個(gè)例子還是想為大家盡量清晰的分析清楚,
 
1、首先我們創(chuàng)建了一個(gè)“燈光”persepctive用來產(chǎn)生3D變化的效果的
 
2、然后我們創(chuàng)建了一個(gè)“舞臺(tái)”  transform-style: preserve-3d
 
3、創(chuàng)建“演員”,這里的演員指的是每張的圖片,在創(chuàng)建的時(shí)候要根據(jù)你最終要呈現(xiàn)的形態(tài)進(jìn)行建模,也即是平移旋轉(zhuǎn)之類的操作
 
腳本的編寫:在編寫腳本的時(shí)候有一點(diǎn)是需要注意的,當(dāng)你把圖片旋轉(zhuǎn)90度的時(shí)候,如果第二次還是設(shè)置90度,那么這個(gè)圖片是不會(huì)發(fā)生變化的,因?yàn)閳D片的變化(旋轉(zhuǎn))是以初始位置為基準(zhǔn)的,所以相對(duì)于初始位置兩次的90度都是一樣的所以沒有任何的效果。這個(gè)在制作的時(shí)候,留意一下即可
 
2、矩形自動(dòng)旋轉(zhuǎn)效果
 
按照上面的例子進(jìn)行整改,要實(shí)現(xiàn)自動(dòng)的旋轉(zhuǎn)其實(shí)就是定義一個(gè)keyframes的運(yùn)動(dòng)規(guī)則,然后在把這個(gè)keyframes套接到animation中,即可實(shí)現(xiàn)CSS自動(dòng)旋轉(zhuǎn)的功能
 
部分的CSS3代碼

CSS Code復(fù)制內(nèi)容到剪貼板
  1. div div{   
  2.             animation:route 10s infinite ease-in-out;    
  3.         }   
  4. //keyframes運(yùn)動(dòng)規(guī)則   
  5. @-webkit-keyframes route{   
  6.             0%{   
  7.                 -webkit-transform:rotateX(90deg);   
  8.             }   
  9.             25%{   
  10.                 -webkit-transform:rotateX(180deg) rotateY(90deg) rotateZ(90deg);   
  11.             }   
  12.             50%{   
  13.                 -webkit-transform:rotateX(270deg) rotateY(180deg) rotateZ(180deg);   
  14.             }   
  15.             75%{   
  16.                 -webkit-transform:rotateX(360deg) rotateY(270deg) rotateZ(270deg);   
  17.             }   
  18.         }   

展示效果:

 三、CSS3 3D使用特效制作與分析
 
 1、模擬卡牌翻轉(zhuǎn)效果
 
這個(gè)我就不多說怎樣制作了,先上效果,圖片是來源于蝸牛的,如有侵犯請(qǐng)告知

 

這個(gè)雖然是歸類到3D的范圍內(nèi),但是在使用的時(shí)候由于不需要產(chǎn)生平行四邊形的變換效果(這個(gè)的具體效果詳見博主的另外一篇博文),所以不需要使用perspective這個(gè)屬性,但是確實(shí)需要使用到CSS3 3D常見效果中的翻轉(zhuǎn)屬性(rotate[X,Y,Z]),這個(gè)的具體原理也是簡(jiǎn)單,但是在使用的時(shí)候有兩點(diǎn)是需要注意的。
 
一)、因?yàn)樾D(zhuǎn)是相對(duì)于卡牌的整體的旋轉(zhuǎn),也就是兩個(gè)面都要旋轉(zhuǎn),所以hover事件要相對(duì)于卡牌整體,如果是相對(duì)于某一個(gè)面的話,那么會(huì)出現(xiàn)一個(gè)面旋轉(zhuǎn),而另外一個(gè)面不旋轉(zhuǎn)的現(xiàn)象
 
二)、在制作的過程中使用了一個(gè)比較少見的屬性:backface-visibility,這個(gè)屬性是為了見圖片的背面設(shè)置為不可見,從而達(dá)到實(shí)現(xiàn)翻轉(zhuǎn)的效果
 
具體代碼見文章最后
 
2、CSS3 3D輪播
 
說到CSS3 3D輪播主要我們可以分成這樣的三類,一類是自動(dòng)播放的輪播圖,另外一類是響應(yīng)點(diǎn)擊事件的輪播圖,第三類是兩者的結(jié)合,即自動(dòng)播放又響應(yīng)點(diǎn)擊事件,這里我們主要討論的是前兩者,第三類比較復(fù)雜這里我們就不多做解釋,以后有機(jī)會(huì)再來跟大家探討探討
 
2.1 自動(dòng)輪播圖
 
這個(gè)的原理我們已經(jīng)在前面中多次提到了,但是各位要注意一個(gè)地方,在keyframes中設(shè)置如:
 
@keyframes test{
   o%,
   12.5%:{………………}
}

這樣的一種形式可以實(shí)現(xiàn)輪播圖的短暫停留。
 
好了看一下效果了:

2.2 CSS3觸發(fā)輪播圖
 
主要的原理是通過判斷點(diǎn)擊的次數(shù),然后是給圖片父類添加旋轉(zhuǎn)的屬性,這樣這個(gè)功能就實(shí)現(xiàn)了,我們對(duì)上面的例子進(jìn)行改進(jìn),效果如下所示 

四、代碼下載
 
 這一次代碼進(jìn)行了遷移,從原本自己的服務(wù)器遷移到了git服務(wù)器,git的下載地址:https://github.com/leslieSie/CSS3_example/tree/develop

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

原文鏈接:http://www.cnblogs.com/st-leslie/p/5791714.html

相關(guān)文章

  • CSS3系列之3D制作方法案例

    這篇文章主要介紹了CSS3系列之3D制作方法詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-08-14

最新評(píng)論