3D來襲,靈動你我(css3 3D動畫)

A:我今天照了張照片做了桌面背景感覺還不錯。
B:一張照片當(dāng)桌面背景算什么,我的桌面背景是來回切換的。
C:切,2D還好意思拿出來說,俺的3D輪播照片都快用膩了,俺想著要不去外星球體驗一下超高維空間。

啥?3D?高維?我的天哪,求A得心里陰影面積。
圖片.png
小A,小B童靴,先別著急,今天就讓你搭上3D的列車,看到 這個3D的輪播,是不是有點(diǎn)心動了。跟緊我,我要啟程了,啊哈哈哈。
20170927_110923.gif
在3D神功練之前,咱們先來扎一下馬步。要練神功,必先**,啊哈哈,不要緊張,開玩笑。

一、扎馬步

馬步0之transform-style

transform-style屬性也是3D效果中經(jīng)常使用的,其兩個參數(shù),flat|preserve-3d. 前者flat為默認(rèn)值,表示平面的;后者preserve-3d表示3D透視。

馬步1之rotateXYZ

3d_axes.png

rotate旋轉(zhuǎn)的意思,rotateX旋轉(zhuǎn)X軸,rotateY旋轉(zhuǎn)Y軸,rotateZ旋轉(zhuǎn)Z軸。您也可以理解為,物體讓X或Y或Z軸旋轉(zhuǎn),旋轉(zhuǎn)完后,重建它的三維坐標(biāo)(坐標(biāo)和物體的相對位置不變)例如,您站著的時候重心在您的肚子上,當(dāng)您繞x轉(zhuǎn)90,躺下后重心還在您的肚子上,此時的重心非彼時的重心,但是很您的相對位置沒有發(fā)生變化,在此僅為例子說,還望懂物理的大咖科普一下。
rotateX(Ndeg) N為正,順時針旋轉(zhuǎn),反之逆時針旋轉(zhuǎn)。上圖理解
rotateX
1506484938(1).png
rotateY
1506484966(1).png
rotateZ
1506484985(1).png

馬步2之translateZ

translateZ( tz ),如果,原始圖像(tz=0)正對你,那么tz的值越大,離你就越近,反之越遠(yuǎn)。tz>0,圖像向屏幕走來,并且圖像很大,tz<0圖像遠(yuǎn)離屏幕,圖像變小。

1506485492(1).png

馬步3之Perspective

perspective ,是透視,視角。

toushi.png

css3所用的透視點(diǎn)在瀏覽器前方,可以理解為我們的眼睛為視點(diǎn)。
在次引用一下大張老師的解釋

一個1680像素寬的顯示器中有張美女圖片,應(yīng)用了3D transform,同時,該元素或該元素父輩元素設(shè)置的perspective大小為2000像素。則這張美女多呈現(xiàn)的3D效果就跟你本人在1.2個顯示器寬度的地方(1680*1.2≈2000)看到的真實效果一致??!


3d-distance.jpg

那么,如果perspective:2000px,translateZ:2100px,那么,該圖像將會越過您的眼睛100px,自然您也看不見這幅圖像了,有誰能看見腦后的東西呢。

perspective有兩種書寫方式
perspective屬性有兩種書寫形式,一種用在舞臺元素上(動畫元素們的共同父輩元素);第二種就是用在當(dāng)前動畫元素上,與transform的其他屬性寫在一起。如下代碼示例
第一種:整體透視(理解為有一個透視點(diǎn),透視整個父元素,子元素配合父元素)

#blue {
  perspective: 400px;
}

#blue figure {
  background: blue;
  transform: rotateY( 45deg );
}
1506494718(1).png

第二種(每一個子元素都有一個透視點(diǎn))

#red figure {
  background: red;
  transform: perspective( 400px ) rotateY(45deg);
}
1506494770(1).png

另外,透視點(diǎn)的默認(rèn)位置在中間perspective-origin: 50% 50%;,我們可以對透視點(diǎn)作出調(diào)整。

perspective-origin: 25% 75%;
1506494932(1).png

基本功咱有了,那么,還等什么,一起來練武吧。

二、練神功

首先我們實現(xiàn)靜態(tài)效果。思路:用4個div,分別為ABCD。然后,用rotateXYZ讓ABCD轉(zhuǎn)至4個方向,然后使用translateZ或translate3d(0,0,n)將ADBC拉開間隔,否則交叉在一起。動態(tài)效果:ABCD依次旋轉(zhuǎn)。分4次:A占據(jù)B的位置,B占C,C占D,換4次位置為一個循環(huán)。在此,貼上含A代碼,其他部分實現(xiàn)原理相同。您也可以移駕全部代碼.

#wrap {
    height: 100px;
    width: 100px;
    transform-style: preserve-3d;
    backface-visibility: visible;
    margin: 200px auto;
    perspective: 500px;
}

.common {
    position: absolute;
    height: 100px;
    width: 100px;
    line-height: 100px;
    font-size: 100px;
    text-align: center;
}

@keyframes fChange {
    0% {
        transform: translate3d(0, 0, 160px);
    }
    5% {
        transform: translate3d(0, 0, 160px);/*每次換位置后,停留0.3s*/
    }

    25% {
        transform: rotateY(-80deg) translate3d(0, 0, 160px);
    }
    30% {
        transform: rotateY(-80deg) translate3d(0, 0, 160px);/*每次換位置后,停留0.3s*/
    }

    50% {
        transform: rotateY(-180deg) translate3d(0, 0, 160px);
    }
    55% {
        transform: rotateY(-180deg) translate3d(0, 0, 160px);/*每次換位置后,停留0.3s*/
    }

    75% {
        transform: rotateY(-280deg) translate3d(0, 0, 160px);
    }
    80% {
        transform: rotateY(-280deg) translate3d(0, 0, 160px);/*每次換位置后,停留0.3s*/
    }

    100% {
        transform: translate3d(0, 0, 160px);
    }
}

神功練好了,但是千萬不要驕傲哦,習(xí)武之人,怎能滿足當(dāng)下一種功夫。

20170630015503752.jpg

歡迎各位朋友批評指正,多多交流。
參考資料:1、鑫空間鑫生活2、http://desandro.github.io/3dtransforms/docs/introduction.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 看了很多視頻、文章,最后卻通通忘記了,別人的知識依舊是別人的,自己卻什么都沒獲得。此系列文章旨在加深自己的印象,因...
    DCbryant閱讀 1,963評論 0 4
  • 一、寫在前面的秋褲 早在去年的去年,我就大肆介紹了2D transform相關(guān)內(nèi)容??催^海賊王的都知道,帶D的家伙...
    MrZengB閱讀 1,402評論 2 9
  • CSS的變形對應(yīng)的屬性是transform,它的作用是修改元素自身的坐標(biāo)空間。這個修改實際對應(yīng)了一個坐標(biāo)系統(tǒng)映射轉(zhuǎn)...
    荷小音閱讀 1,208評論 1 5
  • 當(dāng)我看到下面這張基本圖的時候,我的右側(cè)的濃眉毛不由自主抖動了兩下,呵,呵呵~~ rotateY( angle ) ...
    追風(fēng)逸少丶閱讀 1,620評論 0 3
  • 這十個字的意思是樹上所有的鳥都活得非??鞓?,因為它們在黃昏的時候可以回窩去,就像我們今天有了一個家,所以會覺得很安...
    流年2016閱讀 401評論 0 0

友情鏈接更多精彩內(nèi)容