旋轉(zhuǎn)的立方體

0. 前言

最是一年春好處瓦阐,恰是回家過年時(shí)蜗侈,昨天,經(jīng)過“熱情”的春運(yùn)睡蟋,回到到了家踏幻,最近,感覺動(dòng)畫比較帶感戳杀,今天就做個(gè)比較炫酷的東西叫倍,旋轉(zhuǎn)的立方體。

1. 簡(jiǎn)介

CSS3動(dòng)畫豺瘤,做出來的效果比較吊吆倦,可能在你寫代碼中很少應(yīng)用,但做出來的效果很厲害的

2. 標(biāo)簽屬性

標(biāo)簽 描述
transform 元素可以2D或3D轉(zhuǎn)換
transform-style 規(guī)定元素如何在 3D 空間中顯示坐求。
animation 可以給元素設(shè)置動(dòng)畫
@keyframes 動(dòng)畫名 {from {}to {}} 設(shè)置動(dòng)畫從開始到結(jié)束的
translateX(x) 定義 3D 轉(zhuǎn)化蚕泽,僅使用用于 X 軸的值。
translateY(y) 定義 3D 轉(zhuǎn)化桥嗤,僅使用用于 Y 軸的值须妻。
translateZ(z) 定義 3D 轉(zhuǎn)化,僅使用用于 Z 軸的值泛领。
translate3d(x,y,z) 定義 3D 轉(zhuǎn)化荒吏。
scaleX(x) 定義 3D 縮放轉(zhuǎn)換,通過給定一個(gè) X 軸的值渊鞋。
scaleY(y) 定義 3D 縮放轉(zhuǎn)換绰更,通過給定一個(gè) Y 軸的值瞧挤。
scaleZ(z) 定義 3D 縮放轉(zhuǎn)換,通過給定一個(gè) Z 軸的值儡湾。
rotateX(angle) 定義沿 X 軸的 3D 旋轉(zhuǎn)特恬。
rotateY(angle) 定義沿 Y 軸的 3D 旋轉(zhuǎn)。
rotateZ(angle) 定義沿 Z 軸的 3D 旋轉(zhuǎn)徐钠。
rotate3d(x,y,z,angle) 定義 3D 旋轉(zhuǎn)癌刽。

3. 實(shí)現(xiàn)旋轉(zhuǎn)立方體的思路

  1. 先把正方體的六個(gè)面放在一起
  2. 然后旋轉(zhuǎn)各個(gè)面,讓它形成一個(gè)立方體尝丐。
  3. 然后讓它旋轉(zhuǎn)
  4. 我點(diǎn)擊開始显拜,開始旋轉(zhuǎn),點(diǎn)擊停止爹袁,停止旋轉(zhuǎn)讼油。

4. 代碼實(shí)現(xiàn)

4.1 靜態(tài)頁面
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            *{
                margin: 0;
                padding: 0;
            }
            #box{
                width: 300px;
                height: 300px;
                background-color: pink;
                position: relative;
                margin: 100px auto;
                animation: run 10s linear alternate paused infinite;
                
                transform-style: preserve-3d;
                
            }
            
            @keyframes  run{
                from{
                    transform: rotateX(0) rotateY(0);
                }
                to{
                    transform: rotateX(300deg) rotateY(200deg);
                }
            }
            #box div{
                width: 300px;
                height: 300px;
                position: absolute;
                background-color: orange;
                text-align: center;
                line-height: 300px;
                font-size: 50px;
                opacity: 0.5;
            }
        </style>
    </head>
    <body>
        <div id="box">
            <div class="div1">1</div>
            <div class="div2">2</div>
            <div class="div3">3</div>
            <div class="div4">4</div>
            <div class="div5">5</div>
            <div class="div6">6</div>
        </div>
        <center>
            <input type="button" name="" id="btn" value="開始" />
        </center>
    </body>
</html>
靜態(tài)頁面.png

我在這里設(shè)置一個(gè)透明度,可以看出其他的幾個(gè)面都在它的后面呢簸。然后接下來我們旋轉(zhuǎn)它們矮台,讓它形成一個(gè)立方體的形狀。

4.2 旋轉(zhuǎn)形成立方體

怎么旋轉(zhuǎn)根时?在這里我把它分成三部分
第一部分

translateZ
平移兩個(gè)面形成正方體前后兩個(gè)面
第二部分
rotateX(90deg)
反轉(zhuǎn)兩個(gè)面形成正方體左右兩個(gè)面

1.jpg

第三部分
rotateY(90deg)
反轉(zhuǎn)兩個(gè)面形成正方體上下兩個(gè)面
2.jpg

            /*前面*/
            #box .div1{
                background-color: red;
                transform: translateZ(150px);
            }
            /*后面*/
            #box .div2{
                background-color: deepskyblue;
                transform: translateZ(-150px);
            }
            /*上面*/
            #box .div3{
                background-color: green;
                transform: rotateX(90deg) translateZ(150px);
            }
            /*下面*/
            #box .div4{
                background-color: plum;
                transform: rotateX(90deg) translateZ(-150px);
            }
            /*左面*/
            #box .div5{
                background-color: saddlebrown;
                transform: rotateY(90deg) translateZ(150px);
            }
            /*右面*/
            #box .div6{
                background-color: cyan;
                transform: rotateY(90deg) translateZ(-150px);
            }
旋轉(zhuǎn)好的立方體.png

其實(shí)這已經(jīng)旋轉(zhuǎn)好了瘦赫,從前面顯示的數(shù)字可以看出,你可以想象一下蛤迎,只有旋轉(zhuǎn)起來你才能看出來這是一個(gè)立方體确虱,那就看下去吧。

4.3 讓它旋轉(zhuǎn)

你讓它旋轉(zhuǎn)六個(gè)面是不容易的替裆,你可以看我寫的結(jié)構(gòu)校辩,在六個(gè)面外添加一個(gè)大的div,我們旋轉(zhuǎn)div辆童,就能實(shí)現(xiàn)立方體旋轉(zhuǎn)了.......

<script type="text/javascript">
    box.style.animationPlayState = "running";
</script>
旋轉(zhuǎn)的立方體.gif
4.4 點(diǎn)擊按鈕
btn.onclick = function () {
                if(this.value == "開始"){
                    this.value ="暫停"
                    box.style.animationPlayState = "running";
                }else{
                    this.value ="開始"
                    box.style.animationPlayState = "paused";
                }
            }
點(diǎn)擊按鈕.gif

5. 完整代碼

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            *{
                margin: 0;
                padding: 0;
            }
            #box{
                width: 300px;
                height: 300px;
                background-color: pink;
                position: relative;
                margin: 100px auto;
                animation: run 10s linear alternate paused infinite;
                
                transform-style: preserve-3d;
                
            }
            
            @keyframes  run{
                from{
                    transform: rotateX(0) rotateY(0);
                }
                to{
                    transform: rotateX(300deg) rotateY(200deg);
                }
            }
            #box div{
                width: 300px;
                height: 300px;
                position: absolute;
                background-color: orange;
                text-align: center;
                line-height: 300px;
                font-size: 50px;
                opacity: 0.5;
            }
            #box{
                background: transparent;
            }
            /*前面*/
            #box .div1{
                background-color: red;
                transform: translateZ(150px);
            }
            /*后面*/
            #box .div2{
                background-color: deepskyblue;
                transform: translateZ(-150px);
            }
            /*上面*/
            #box .div3{
                background-color: green;
                transform: rotateX(90deg) translateZ(150px);
            }
            /*下面*/
            #box .div4{
                background-color: plum;
                transform: rotateX(90deg) translateZ(-150px);
            }
            /*左面*/
            #box .div5{
                background-color: saddlebrown;
                transform: rotateY(90deg) translateZ(150px);
            }
            /*右面*/
            #box .div6{
                background-color: cyan;
                transform: rotateY(90deg) translateZ(-150px);
            }
        </style>
    </head>
    <body>
        <div id="box">
            <div class="div1">1</div>
            <div class="div2">2</div>
            <div class="div3">3</div>
            <div class="div4">4</div>
            <div class="div5">5</div>
            <div class="div6">6</div>
        </div>
        <center>
            <input type="button" name="" id="btn" value="開始" />
        </center>
        <script type="text/javascript">
            btn.onclick = function () {
                if(this.value == "開始"){
                    this.value ="暫停"
                    box.style.animationPlayState = "running";
                }else{
                    this.value ="開始"
                    box.style.animationPlayState = "paused";
                }
            }
        </script>
    </body>
</html>

6. 結(jié)束語

過年的腳步越來越近了宜咒,提前祝大家新年快樂,好了把鉴,這個(gè)很炫酷的立方體已經(jīng)做完了故黑,如果你覺得還可以,就給我點(diǎn)贊庭砍,分享一下吧场晶!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市怠缸,隨后出現(xiàn)的幾起案子诗轻,更是在濱河造成了極大的恐慌,老刑警劉巖揭北,帶你破解...
    沈念sama閱讀 216,496評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件扳炬,死亡現(xiàn)場(chǎng)離奇詭異吏颖,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)鞠柄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門侦高,熙熙樓的掌柜王于貴愁眉苦臉地迎上來嫉柴,“玉大人厌杜,你說我怎么就攤上這事〖坡荩” “怎么了夯尽?”我有些...
    開封第一講書人閱讀 162,632評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長登馒。 經(jīng)常有香客問我匙握,道長,這世上最難降的妖魔是什么陈轿? 我笑而不...
    開封第一講書人閱讀 58,180評(píng)論 1 292
  • 正文 為了忘掉前任圈纺,我火速辦了婚禮,結(jié)果婚禮上麦射,老公的妹妹穿的比我還像新娘蛾娶。我一直安慰自己,他們只是感情好潜秋,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評(píng)論 6 388
  • 文/花漫 我一把揭開白布蛔琅。 她就那樣靜靜地躺著,像睡著了一般峻呛。 火紅的嫁衣襯著肌膚如雪罗售。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,165評(píng)論 1 299
  • 那天钩述,我揣著相機(jī)與錄音寨躁,去河邊找鬼。 笑死牙勘,一個(gè)胖子當(dāng)著我的面吹牛朽缎,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播谜悟,決...
    沈念sama閱讀 40,052評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼话肖,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了葡幸?” 一聲冷哼從身側(cè)響起最筒,我...
    開封第一講書人閱讀 38,910評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蔚叨,沒想到半個(gè)月后床蜘,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體辙培,經(jīng)...
    沈念sama閱讀 45,324評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評(píng)論 2 332
  • 正文 我和宋清朗相戀三年邢锯,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了扬蕊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,711評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡丹擎,死狀恐怖尾抑,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蒂培,我是刑警寧澤再愈,帶...
    沈念sama閱讀 35,424評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站护戳,受9級(jí)特大地震影響翎冲,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜媳荒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評(píng)論 3 326
  • 文/蒙蒙 一抗悍、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧钳枕,春花似錦缴渊、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至田柔,卻和暖如春俐巴,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背硬爆。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評(píng)論 1 269
  • 我被黑心中介騙來泰國打工欣舵, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人缀磕。 一個(gè)月前我還...
    沈念sama閱讀 47,722評(píng)論 2 368
  • 正文 我出身青樓缘圈,卻偏偏與公主長得像,于是被迫代替她去往敵國和親袜蚕。 傳聞我的和親對(duì)象是個(gè)殘疾皇子糟把,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評(píng)論 2 353

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