CSS3實現3D立體效果

2021-07-22 08:47:33 字數 2360 閱讀 4527

css3實現3d效果 1. 涉及到的幾個css3屬性 首先大家需要了解transform屬性,主要有平移(translate),縮放(scale),拉伸(skew),旋轉(rotate)。 這裡涉及到3d轉換的主要介紹旋轉。 下面通過一組rotate效果直觀理解rotatex,rotatey,rotatez區別。 **: .box .box1 .box2 .box3 .stage

rotatex

rotatey

rotatez

效果如圖:

分析:仔細看上面代阿碼中,三個div框套在乙個id為stage的div父框中。父框即為舞台,我們假設站在舞台下面看表演,整個父框就是舞台,裡面的子元素就是演員,呈現出不同的姿態,面向我們的是rotatex,側身的rotatey,在螢幕螢幕滾動的是rotatez。

z軸其實就是我們眼睛看過去的方向。

stage裡面有個非常重要的屬性:

1)transform–style屬性指定巢狀元素是怎樣在三維空間中呈現,css規範裡面這樣規定:

flat 子元素將不保留其 3d 位置。

preserve-3d 子元素將保留其 3d 位置。

所以我們為了3d呈現,新增該屬性:

-webkit-transform-style:preserve-3d

2)perspective的中文意思是:透視,視角。我們透視點應該就在瀏覽器的前方。所以該屬性設定的距離越大,舞台離我們越遠,呈現的元素就會越小。

perspective屬性的存在與否決定了你所看到的是2次元的還是3次元的,也就是是2d transform還是3d transform。沒有透視,不成3d。

3)給子元素設定translatez。我們知道在2d變換中有translate屬性,這個也是一樣,只不過是順著z軸平移,也就是設定的translatez值越小,則子元素大小越小(因為元素遠去,我們眼睛看到的就會變小);translatez值越大,該元素也會越來越大,當translatez值非常接近perspective設定的畫素,但是不超過該畫素的時候(如300畫素),該元素的大小就會撐滿整個螢幕。接下來我們會利用該屬性來調整子元素,實現乙個立方體的效果。

2. 立方體製作

立方體有六個面,如果舞台中立方體正對我們,我們只能看到乙個正面,也就是其他5個面都看不見。

我們通過**完成前面(本文**是在chrome瀏覽器測試,以下**能夠相容webkit核心和火狐瀏覽器):

.box6

translatez讓平面向視點走100px。

所以第二個平面背面的**:

.box5

同理:兩個側面的**就是rotatey:90,同時左右分開100px畫素,**如下:

.box1

.box2

上下兩個平面,**:

.box3

.box4

再將開始的html頁面增加幾個div,調整一下:整體**如下:

.box

.box1

.box2

.box3

.box4

.box5

.box6

.stage

執行後效果如下:

我們剛開始說了,只能看到正面,現在我們如果將舞台旋轉起來,各個平面就可以一覽無餘了。

這裡給舞台div設定旋轉動畫:

-webkit-animation:mydonghua 5s ease infinite;

-moz-animation:mydonghua 5s ease infinite;

接下來定義mydonghua的行為:

@-webkit-keyframes mydhua

100%

} @-moz-keyframes mydhua

100%}

最終執行效果(此處截圖,應該是乙個反覆旋轉的動畫):

小結 css3涉及到3d變換關鍵屬性:

1. perspective屬性,該屬性表示視點,該屬性調整我們視點的遠近。

2. rotate(degree),旋轉分別繞x,y,z軸進行degree度旋轉。

3. transform-style可以設定元素所處的是3d空間還是平面。flat表示平面。

4. translatez 繞z軸平移,調整平面向自己所面向的方向移動的距離。如果取值為負值,表示平面向背向的方向移動一定距離。

CSS3實現3D盒子效果

近日,看到了css3中,設計動態立體盒子的例子,覺得比較新奇,所以研究了下,加以自己的拙見,設計了如圖所示的例子,拿來給大家分享 此圖為firefox下的截圖 這跟 3d盒子 的實現方式一樣,我的盒子也是以它為原型來設計的。整個盒子的html結構很簡單,如下 後下 左前上右 一,盒子定位 首先初始化...

css3動畫效果和3D模型

今天了解了css3的動畫漸變效果,如果我們要對頁面中的某個元素的樣式進行變化,就不用js或jquery苦苦的寫 了,直接用css3的這個transition這個屬性就ok,方便快捷,下面請看demo。我要對某個div操作,例如 當滑鼠移入div中,改變其width height和background...

css3的3D位移效果講解

lang en charset utf 8 3d位移的demotitle perspective 定義3d元素距離檢視的距離 以畫素為單位 當給乙個元素定義perspective屬性的時候,其 子元素 就獲得了乙個透視效果,元素本身並沒有 設定人眼到螢幕平面的距離,只影響3d元素,不影響2d元素 所...