成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

玩轉(zhuǎn)CSS 3D -正四面體與正六面體

doodlewind / 1266人閱讀

摘要:簡單來說,就是非常對稱的立方體,而且每一個面都是由正多邊形組成,因此在這一篇,將會畫出正四面體正六面體。完成之后應(yīng)該就會順利地看到一個正六面體,這時候我們可以改變的,可以更加清楚。

我們理解了CSS 3D的個中原理之后,廢話就不用多說,直接來畫正多面體吧!只要正多面體可以畫出來,基本上在CSS 3D的領(lǐng)域里,大概就沒甚么難得倒我們了。

首先看一下百度百科對于正多面體的介紹:“多面體,或稱柏拉圖立體,指各面都是全等的正多邊形且每一個頂點所接的面數(shù)都是一樣的凸多面體?!焙唵蝸碚f,就是非常對稱的立方體,而且每一個面都是由正多邊形組成,因此在這一篇,將會畫出正四面體、正六面體。

正六面體

要繪制正多面體,第一個一定要先畫正六面體,為什么呢?因為正六面體就是我們熟知的正立方體,夾角都是90度,也是最容易理解的形狀(就算有寫少許錯,好像還是畫得出來…)

首先我們要先在space里頭放入六個正方形,分別給予box1到box6的類別名稱識別,并寫上1到6來確定翻轉(zhuǎn)是否為正面朝外(朝內(nèi)的話文字就會是反過來的)。

1
2
3
4
5
6

接著對camera、space和這些box做基本的CSS定義,記得box的position要設(shè)為absolute,才不會互相擠壓。

.camera{
    width:200px;
    height:200px;
    perspective-origin:center center;
    -moz-perspective-origin:center center;
    -webkit-perspective-origin:center center;
    perspective:500px;
    -moz-perspective:500px;
    -webkit-perspective:500px;
}
.space{
    position:relative;
    width:100%;
    height:100%;
    border:1px dashed #000;
    transform-style:preserve-3d;
    -moz-transform-style:preserve-3d;
    -webkit-transform-style:preserve-3d;
}
.space div{
    position:absolute;
    width:100px;
    height:100px;
    font-size:50px;
    text-align:center;
    line-height:100px;
}

完成后先來看box1,box1最簡單,只要將它位移到space的中間即可。

.box1{
    background:rgba(255,0,0,.2);
    transform:translateX(50px) translateY(50px);
}

box2除了移到中間,還必須要旋轉(zhuǎn)90度,這時候就要使用transform-origin的屬性,這可以設(shè)定物體作變化時要以自身的哪一點為主,設(shè)定不同的位置,旋轉(zhuǎn)90度之后就會在不同的位置,這里我們先把box2水平位移150px,然后把變換的X定位在左側(cè),旋轉(zhuǎn)后就會可以順利地接在box1旁邊。

.box2{
    background:rgba(255,255,0,.2);
    transform-origin:left top;
    transform:translateX(150px) translateY(50px) rotateY(90deg);
}

box3剛好在box1的正對面,所以只要旋轉(zhuǎn)180度即可,但很重要的是旋轉(zhuǎn)之后整個Z軸會跟著旋轉(zhuǎn)180度,為了避免錯亂,先把box3往Z軸后面移動100px,旋轉(zhuǎn)后就會正常。

.box3{
    background:rgba(0,255,0,.2);
    transform:translateX(50px) translateY(50px) translateZ(-100px) rotateY(180deg);
}

box4和box2類似,不過要將旋轉(zhuǎn)的中心點移到右側(cè),也因為移到右側(cè)的緣故,所以我們要先進行X的位移。

.box4{
    background:rgba(255,0,255,.2);
    transform-origin:right top;
    transform:translateX(-50px) translateY(50px) rotateY(-90deg);
}

box5在上方,box6在下方,用跟box1到box4同樣的方法,只是這次是要繞著X軸旋轉(zhuǎn)。

.box5{
    background:rgba(0,0,255,.2);
    transform-origin:center bottom;
    transform:translateX(50px) translateY(-50px) rotateX(90deg);
}
.box6{
    background:rgba(0,255,255,.2);
    transform-origin:center top;
    transform:translateX(50px) translateY(150px) rotateX(-90deg);
}

完成之后應(yīng)該就會順利地看到一個正六面體,這時候我們可以改變camera的perspective,可以更加清楚。

我們可以在space套用animate的效果,透過space的旋轉(zhuǎn),仿佛就是一個正立方體在旋轉(zhuǎn)啰!

.space{
    position:relative;
    width:100%;
    height:100%;
    -webkit-transform-style:preserve-3d;
    -webkit-transform-origin:center center -50px;
    -webkit-animation:s 4s linear infinite;
}
@-webkit-keyframes s{
    0%{
        -webkit-transform:rotateY(0);
    }
    100%{
        -webkit-transform:rotateY(-359.9deg);
    }
}

正四面體

理解正六面體之后,正四面體就比較好上手了,正四面體由四個正三角形組成,每個面之間的夾角為70.5度,所以待會旋轉(zhuǎn)的角度也就是70.5度。

首先看到HTML的結(jié)構(gòu)就是只有四個div而已。

camera和space的設(shè)定就不多談,直接看到這些box的屬性,別忘記要畫正三角形,就要用到邊框來繪制。

.space div{
  position:absolute;
  width:0;
  height:0;
  border-width:0 50px 87px;
  border-style:solid;
  opacity:.4;
}

首先看到box1,box1依舊是最簡單的(但也是比正方形的麻煩一點),這里我要用box1當(dāng)?shù)?,所以除了直接做位置的移動,移動后還要繞X軸旋轉(zhuǎn)90度,比較特別的是因為正三角形是由邊框構(gòu)成,所以顏色就是要改變border才可以。

.box1{
    border-color:transparent transparent #f00;
    transform-origin:center bottom;
    transform:translateX(50px) translateY(50px) rotateX(-90deg);
}

再來就是另外三個面了,box2跟box1差不多簡單,只是box1旋轉(zhuǎn)90度,box2要旋轉(zhuǎn)19.5度,因為box1要和box2有著70.5度的夾角。

.box2{
    border-color:transparent transparent #00f;
    transform-origin:center bottom;
    transform:translateX(50px) translateY(50px) rotateX(-19.5deg);
}

box3比較麻煩,我們要先讓box3繞著Y軸旋轉(zhuǎn)60度(因為正三角形每個角是60度),繞完之后,再繞X軸旋轉(zhuǎn)19.5度,為什么這里的19.5度是正值呢?因為我們繞Y軸旋轉(zhuǎn)后,X軸也跟著旋轉(zhuǎn),所以繞X軸的方向就變成顛倒過來了。

.box3{
    border-color:transparent transparent #00f;
    transform-origin:right bottom;
    transform:translateX(50px) translateY(50px) rotateY(60deg) rotateX(19.5deg);
}

box4和box3類似,同樣的要先繞Y旋轉(zhuǎn)60度,這次是要繞負(fù)的,因為是另外一側(cè)。

.box4{
    border-color:transparent transparent #f0f;
    transform-origin:left bottom;
    transform:translateX(50px) translateY(50px) rotateY(-60deg) rotateX(19.5deg);
}

按照上面做,應(yīng)該就可以得到下圖的結(jié)果:

同樣的,把space加上動畫,就可以看到正四面體旋轉(zhuǎn)啰!比較不同的地方是中心點的位移為29px,為什么呢?因為要抓取正三角形的中心點,數(shù)學(xué)式為:tan(30deg)x 50 = 28.86。

.space{
    position:relative;
    width:100%;
    height:100%;
    transform-style:preserve-3d;
    -webkit-transform-origin:center center 29px;
    -webkit-animation:s 4s linear infinite;
}
@-webkit-keyframes s{
    0%{
        -webkit-transform:rotateY(0);
    }
    100%{
        -webkit-transform:rotateY(-359.9deg);
    }
}


文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/114474.html

相關(guān)文章

  • 帶你玩轉(zhuǎn)css3的3D!

    摘要:透視即是以現(xiàn)實的視角來看屏幕上的事物,從而展現(xiàn)的效果。旋轉(zhuǎn)則不再是平面上的旋轉(zhuǎn),而是三維坐標(biāo)系的旋轉(zhuǎn),就包括軸,軸,軸旋轉(zhuǎn)。必須與屬性一同使用,而且只影響轉(zhuǎn)換元素。可自由轉(zhuǎn)載引用,但需署名作者且注明文章出處。 showImg(https://segmentfault.com/img/bVzJoZ); 話不多說,先上demo 酷炫css3走馬燈/正方體動畫: https://bupt-...

    Panda 評論0 收藏0
  • 帶你玩轉(zhuǎn)css3的3D!

    摘要:透視即是以現(xiàn)實的視角來看屏幕上的事物,從而展現(xiàn)的效果。旋轉(zhuǎn)則不再是平面上的旋轉(zhuǎn),而是三維坐標(biāo)系的旋轉(zhuǎn),就包括軸,軸,軸旋轉(zhuǎn)。必須與屬性一同使用,而且只影響轉(zhuǎn)換元素??勺杂赊D(zhuǎn)載引用,但需署名作者且注明文章出處。 showImg(https://segmentfault.com/img/bVzJoZ); 話不多說,先上demo 酷炫css3走馬燈/正方體動畫: https://bupt-...

    archieyang 評論0 收藏0
  • 玩轉(zhuǎn)3D Swiper性感秀之思路分析總結(jié)

    摘要:前言繼一次的魔方之后,這次帶你一起玩轉(zhuǎn)性感美女秀,正常套路,請先一堵為快,有興趣繼續(xù),沒興趣也可以看看美女養(yǎng)眼哦 showImg(https://segmentfault.com/img/bVbi4d2?w=1008&h=298); 前言   繼一次的3D魔方之后,這次帶你一起玩轉(zhuǎn)性感美女秀,正常套路,請先一堵為快,有興趣繼續(xù),沒興趣也可以看看美女養(yǎng)眼哦

    Zoom 評論0 收藏0
  • css3的3D

    摘要:概念要玩轉(zhuǎn)的,就必須了解幾個詞匯,便是透視旋轉(zhuǎn)和移動。透視即是以現(xiàn)實的視角來看屏幕上的事物,從而展現(xiàn)的效果。旋轉(zhuǎn)則不再是平面上的旋轉(zhuǎn),而是三維坐標(biāo)系的旋轉(zhuǎn),就包括軸,軸,軸旋轉(zhuǎn)。 1.概念 要玩轉(zhuǎn)css3的3d,就必須了解幾個詞匯,便是透視(perspective)、旋轉(zhuǎn)(rotate)和移動(translate)。透視即是以現(xiàn)實的視角來看屏幕上的2D事物,從而展現(xiàn)3D的效果。旋轉(zhuǎn)則不...

    feng409 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<