一步步教你打造3D旋轉(zhuǎn)盒

今天又來(lái)一了一篇關(guān)于3D效果的文章焕数,教你打造自己的3D旋轉(zhuǎn)盒
首先還是希望大家自己看看關(guān)于transform這個(gè)屬性的相關(guān)特性作用,張前輩已經(jīng)寫了詳細(xì)的教程递览,直接附上
http://www.zhangxinxu.com/wordpress/2012/09/css3-3d-transform-perspective-animate-transition/comment-page-1/
OK下面我們開始吧
首先我們創(chuàng)建如下的HTML基本骨架

<div id="container"> 
    <div id="box"> 
        <div class="plane front"></div> 
        <div class="plane back"></div> 
        <div class="plane top"></div> 
        <div class="plane bottom"></div>
        <div class="plane left"></div>
       <div class="plane right"></div>
   </div>
</div>

要體現(xiàn)出3D的那種近大遠(yuǎn)小的感覺,我們首先需要在id='container'的DIV中加入perspective:800px;(常用值)狗超,這個(gè)值越小近大遠(yuǎn)小的感覺會(huì)越明顯,到接近0時(shí)朴下,就會(huì)充滿熒屏努咐,就像你在眼前放一片葉子,很近的話殴胧,小小葉子就會(huì)充滿你的整個(gè)視野渗稍,從而看不見其他東西,正所謂一葉障目团滥,不見泰山竿屹。然后再加上一些其他基本樣式
CSS代碼:

#container {
  width:200px;
  height:200px;
  border:1px solid  #FF0; 
  position:relative;
  perspective:800px;
  margin:200px auto;}

這是看見的應(yīng)該只有一個(gè)黃色的正方形邊框。
然后id="box"這個(gè)div很顯然是這個(gè)旋轉(zhuǎn)的盒子主體灸姊,里面的6個(gè)div就是盒子的六個(gè)面拱燃,現(xiàn)在我們要做的就是如何旋轉(zhuǎn)和平移這六個(gè)面,是她拼接成一個(gè)立方體力惯。
首先我們跟這6個(gè)面加上基本樣式(長(zhǎng)碗誉、寬、顏色)

.plane{width: 100px;height: 100px;}
.front{background: pink;} 
.back{background: purple;} 
.top{background: red;} 
.bottom{background: black;} 
.left{background: yellow;} 
.right{background: green;}

那么得到將是下面的樣子



現(xiàn)在呢父晶,我們就需要將這6個(gè)面旋轉(zhuǎn)平移拼成一個(gè)立方體了哮缺,首先我們需要將id="box"這個(gè)div設(shè)置成3D模式呈現(xiàn),即加入下面的css代碼:

#box {-webkit-transform-style:preserve-3d;
      transform-style:preserve-3d;margin:73px auto;}

然后我們將六個(gè)面相對(duì)于id="container"的DIV來(lái)個(gè)絕對(duì)定位诱建,在.plane的類中加入
position: absolute;

那么我們就會(huì)得到下面的效果:



好了現(xiàn)在就好比蝴蜓,你手里有6張正方形的卡片,疊在一起俺猿,現(xiàn)在你要怎么將每個(gè)面進(jìn)行不同的旋轉(zhuǎn)平移變成一個(gè)立方體的問(wèn)題茎匠,是不是馬上就有了思路,下面我們就需要用代碼來(lái)實(shí)現(xiàn)押袍。為了便于觀察诵冒,我們將加入如下代碼
現(xiàn)在我們將黃色的面也就是class="left"的面進(jìn)行以Y軸旋轉(zhuǎn)90度,得到下圖



然后我們只需要將這個(gè)黃色的面谊惭,向左邊平移50px就行了(因?yàn)槲覀兊牧⒎襟w的邊長(zhǎng)為100汽馋,只需左邊的面向左平移50px。右邊的向右平移50px圈盔,合起來(lái)就是100px),但是如果平移50px豹芯,會(huì)剛好被綠色的面給擋住,所以我們平移60px,
  .left{background: yellow;transform: rotateY(-90deg) translateZ(60px);}

得到下圖:



我們的俯視圖將是這樣



同樣我們的右面可以這樣得到:
.right{background: green;transform: rotateY(90deg) translateZ(60px);}

效果圖(左邊正視圖驱敲,右邊俯視圖)



現(xiàn)在就需要前后兩個(gè)面了铁蹈,從上面的俯視圖中我們可以知道,前后兩面不需要旋轉(zhuǎn)众眨,只需要平移即可握牧,代碼如下

.front{background: pink;transform: translateZ(60px);}
.back{background: purple;transform: translateZ(-60px);}

效果圖(左邊正視圖容诬,右邊俯視圖)


現(xiàn)在就只需要處理上下兩個(gè)面了,底面和頂面先都圍繞X軸旋轉(zhuǎn)90度

.top{background: red;transform: rotateX(90deg);}
.bottom{background: black;transform: rotateX(90deg);}

俯視圖如下



現(xiàn)在只需要沿腰,底面向下平移50度览徒,頂面向上平移50度就行了

.top{background: red;transform: rotateX(90deg) translateZ(50px);}
.bottom{background: black;transform: rotateX(90deg) translateZ(-50px)}

效果圖(效果圖都讓id='box'的div進(jìn)行了一定的旋轉(zhuǎn),便于觀察)


現(xiàn)在我們把平移的長(zhǎng)度換成50px颂龙,每個(gè)面之間就不會(huì)再有縫隙了

 .plane{width: 100px;height: 100px;position: absolute;}
 .front{background: pink;transform: translateZ(50px);} 
 .back{background: purple;transform: translateZ(-50px);} 
 .left{background: yellow;transform: rotateY(-90deg) translateZ(50px);} 
 .right{background: green;transform: rotateY(90deg) translateZ(50px);} 
 .top{background: red;transform: rotateX(90deg) translateZ(50px);} 
 .bottom{background: black;transform: rotateX(90deg) translateZ(-50px)}

效果圖:



OK 已經(jīng)出來(lái)了习蓬,現(xiàn)在我們加上動(dòng)畫,讓這個(gè)盒子轉(zhuǎn)起來(lái):

#container{
  width: 200px;height: 200px;
  border:1px solid yellow;
  margin:50px auto;
  position: relative;
  perspective:800px;} 
#box{
    -webkit-transform-style: preserve-3d;
    transform-style: preserve-3d;
    margin: 50px auto;
    animation:play 30s infinite linear ;}  
   /* 6個(gè)面 */
.plane{width: 100px;height: 100px;position: absolute;}
.front{background: pink;transform: translateZ(50px);} 
.back{background: purple;transform: translateZ(-50px);} 
.left{background: yellow;transform: rotateY(-90deg) translateZ(50px);} 
.right{background: green;transform: rotateY(90deg) translateZ(50px);}
.top{background: red;transform: rotateX(90deg) translateZ(50px);} 
.bottom{background: black;transform: rotateX(90deg) translateZ(-50px)} 

@keyframes play{ 
  to{transform: rotateX(360deg) rotateY(360deg);}
 } 

OK措嵌,盒子就自己轉(zhuǎn)起來(lái)了友雳,怎么樣,炫酷吧铅匹,我們可以用這個(gè)來(lái)做3Dbanner圖,3D的旋轉(zhuǎn)柱饺藤,3D的選項(xiàng)卡等等 如下圖:


效果展示鏈接:http://djlxs.herokuapp.com/
怎么樣效果不錯(cuò)吧

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末包斑,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子涕俗,更是在濱河造成了極大的恐慌罗丰,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,914評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件再姑,死亡現(xiàn)場(chǎng)離奇詭異萌抵,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)元镀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門绍填,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人栖疑,你說(shuō)我怎么就攤上這事讨永。” “怎么了遇革?”我有些...
    開封第一講書人閱讀 156,531評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵卿闹,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我萝快,道長(zhǎng)锻霎,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,309評(píng)論 1 282
  • 正文 為了忘掉前任揪漩,我火速辦了婚禮旋恼,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘氢拥。我一直安慰自己蚌铜,他們只是感情好锨侯,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著冬殃,像睡著了一般囚痴。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上审葬,一...
    開封第一講書人閱讀 49,730評(píng)論 1 289
  • 那天深滚,我揣著相機(jī)與錄音,去河邊找鬼涣觉。 笑死痴荐,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的官册。 我是一名探鬼主播生兆,決...
    沈念sama閱讀 38,882評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼膝宁!你這毒婦竟也來(lái)了鸦难?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,643評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤员淫,失蹤者是張志新(化名)和其女友劉穎合蔽,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體介返,經(jīng)...
    沈念sama閱讀 44,095評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡拴事,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了圣蝎。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片刃宵。...
    茶點(diǎn)故事閱讀 38,566評(píng)論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖捅彻,靈堂內(nèi)的尸體忽然破棺而出组去,到底是詐尸還是另有隱情,我是刑警寧澤步淹,帶...
    沈念sama閱讀 34,253評(píng)論 4 328
  • 正文 年R本政府宣布从隆,位于F島的核電站,受9級(jí)特大地震影響缭裆,放射性物質(zhì)發(fā)生泄漏键闺。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評(píng)論 3 312
  • 文/蒙蒙 一澈驼、第九天 我趴在偏房一處隱蔽的房頂上張望辛燥。 院中可真熱鬧,春花似錦、人聲如沸挎塌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)榴都。三九已至待锈,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間嘴高,已是汗流浹背竿音。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留拴驮,地道東北人春瞬。 一個(gè)月前我還...
    沈念sama閱讀 46,248評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像套啤,于是被迫代替她去往敵國(guó)和親宽气。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評(píng)論 2 348

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