CSS3實(shí)現(xiàn)球體旋轉(zhuǎn)

本教程簡(jiǎn)述如何用CSS3實(shí)現(xiàn)旋轉(zhuǎn)的球體

效果如下圖所示盅粪,球體沿著中間的軸旋轉(zhuǎn):

1478667349133032.png

要理解的知識(shí)點(diǎn)

1 三維空間的透視屬性
css屬性:perspective
perspective 屬性有兩個(gè)值娱仔,none 和 自己定義的具體像素,例如1000px。
注意:當(dāng)為元素定義 perspective 屬性時(shí)赡矢,其子元素會(huì)獲得透視效果,而不是元素本身题造,所以我們可以把這個(gè)屬性理解為照相機(jī)和被拍攝物體的距離鹦赎,CSS3 3D 變換中透視的透視點(diǎn)是在瀏覽器的前方谍椅,當(dāng)我們?cè)O(shè)置它的值為具體數(shù)值的時(shí)候,其子元素就會(huì)具有近大遠(yuǎn)小古话,近實(shí)遠(yuǎn)虛的效果雏吭。
目前這個(gè)屬性對(duì)瀏覽器支持還不算太好,只有Chrome 和 Safari 支持替代的 -webkit-perspective 屬性陪踩。
2 css屬性transform-style
這個(gè)屬性瀏覽器支持情況良好杖们,除了ie瀏覽器,其他瀏覽器都支持肩狂。Firefox 支持 transform-style 屬性摘完,而Chrome、Safari 和 Opera 支持替代的 -webkit-transform-style 屬性傻谁。
transform-style屬性是設(shè)置其子元素是否保留3d位置的孝治。
它也是有兩個(gè)值:
1 默認(rèn)值是flat,表示其子元素不保留3d位置。
2另一個(gè)值是preserve-3d栅螟,當(dāng)元素設(shè)置了這個(gè)值的時(shí)候荆秦,其子元素就相當(dāng)于進(jìn)入了三維空間。

如圖所示:


1478668191101972.png


x軸表示橫向的軸
y軸表示縱向的軸
z軸其實(shí)就是我們的視線(xiàn)力图,是與我們直視的水平面垂直的


如果一個(gè)元素沿著x軸旋轉(zhuǎn)步绸,可以想象成奧運(yùn)單桿運(yùn)動(dòng)員那樣運(yùn)動(dòng)~
如果一個(gè)元素沿著y軸旋轉(zhuǎn),可以想象成公園旋轉(zhuǎn)木馬沿著中間的柱子繞圈圈~
而元素沿著z軸旋轉(zhuǎn)的話(huà)更好理解了吃媒,可以想象成視線(xiàn)正前方瓤介,有一個(gè)風(fēng)扇,風(fēng)扇的扇葉就是沿著z軸旋轉(zhuǎn)的~

關(guān)于3d的一些相關(guān)屬性赘那,介紹完畢刑桑,那么開(kāi)始案例制作

結(jié)構(gòu)和樣式
(代碼如下,具體屬性都添加了對(duì)應(yīng)注釋?zhuān)?/p>

<!doctype html>
<html>
<head>
      <meta charset="UTF-8">
      <title>ball</title>
    <style>
      *{padding: 0; margin: 0; list-style: none; border: 0;}
      body{background:#000;}
      /* 設(shè)置透視盒子在瀏覽器水平和垂直都居中 */
      .ball{
           width: 300px;
          height: 300px;
           position:absolute;
           left: 50%; top: 50%;
           margin-left: -150px;
           margin-top: -150px;
           perspective:3000px;
           -webkit-perspective:3000px;
       }
       /* 設(shè)置此元素子元素保留3d位置 */
      .ball_in{
           position:absolute;
           left: 0;
           top: 0;
           width: 100%;
           height: 100%;
            transform-style:preserve-3d;
      }
      /* 實(shí)體化這些li募舟,然后設(shè)置其為圓形 */
      .ball_in li{
           position:absolute;
           left: 0;
           top: 0;
           width: 100%;
           height: 100%;
           border: 1px solid #fff;
            border-radius:50%;       
      }
      /* 對(duì)不同的li沿著y軸旋轉(zhuǎn)不同的角度祠斧,其實(shí)圓球體就出來(lái)了 */
      /* 5個(gè)li元素,所以每個(gè)旋轉(zhuǎn)的角度是360/2/5=36deg */
      .ball_in li:nth-child(1){transform:rotateY(0);}
      .ball_in li:nth-child(2){transform:rotateY(36deg);}
      .ball_in li:nth-child(3){transform:rotateY(72deg);}
      .ball_in li:nth-child(4){transform:rotateY(108deg);}
      .ball_in li:nth-child(5){transform:rotateY(144deg);}
    </style>
</head>
<body>
  
<div><!--設(shè)置透視屬性的盒子拱礁,其子元素將具有透視效果-->
      <ul><!--設(shè)置其子元素保留3d位置的元素-->
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
    </ul>
</div>
      
</body>
</html>

效果如圖:

1478668644890026.png

此時(shí)我們給球體整體則.ball_in元素沿著x軸向前傾斜和沿著z軸向左傾斜一定角度琢锋,則立體感更強(qiáng)。

代碼:


    
.ball_in{

           
position:absolute;

           
left: 0;

           
top: 0;

           
width: 100%;

           
height: 100%;

           
transform-style:preserve-3d;

           
/* 球體向前傾斜30deg,向左傾斜30deg */

           
transform:rotateX(-30deg) rotateZ(-30deg);

      
}

效果如圖:

1478668744728269.png

利用偽元素給球體添加中心軸呢灶,代碼如下:


      
/* 利用偽元素給球體添加中心軸 */

      
.ball_in:after{

           
content:"";

           
position:absolute;

           
width: 2px;

           
height:500px;

           
background:blue;

           
left:150px;

           
top:-100px;  

      
}

效果如圖:

1478668813915716.png

最后步驟吴超,給每個(gè)li添加顏色和整個(gè)球體添加旋轉(zhuǎn)的動(dòng)畫(huà):

整個(gè)球體添加旋轉(zhuǎn)的動(dòng)畫(huà)代碼如下:


.ball_in{

           
position:absolute;

           
left: 0;

           
top: 0;

           
width: 100%;

           
height: 100%;

           
transform-style:preserve-3d;

           
-webkit-transform-style:preserve-3d;

           
/* 球體向前傾斜30deg,向左傾斜30deg */

           
transform:rotateX(-30deg) rotateZ(-30deg);

            
/* 球體旋轉(zhuǎn)動(dòng)畫(huà) */

           
animation:circle 10s linear infinite;

      
}

      
/* 定義旋轉(zhuǎn)動(dòng)畫(huà) */

      
@keyframes circle{

           
0%{transform:rotateX(-30deg) rotateZ(-30deg) rotateY(0);}

           
100%{transform:rotateX(-30deg) rotateZ(-30deg) rotateY(360deg);}

      
}

最終效果如圖:

(繞著y軸轉(zhuǎn)圈圈)

1478668994129590.png

是否覺(jué)得五顏六色的球體沒(méi)意思?

其實(shí)還可以改裝一下鸯乃,搞點(diǎn)小意思鲸阻,例如球體不需要那么多個(gè)面,然后把剩余的面換成好看的圖片,改裝后效果如圖:

1478669165780209.png

有沒(méi)有一種cd在三維空間旋轉(zhuǎn)的感覺(jué)?

又或者我們?cè)俑难b一下鸟悴,效果如下圖:

1478669201363704.png
1478669222125540.png
1478669242415643.png

好了陈辱,最后奉上案例源碼,有興趣的朋友可以自行下載遣臼。

來(lái)源:http://bbs.520it.com/forum.php?mod=viewthread&tid=2759&extra=page%3D1%26filter%3Ddateline%26orderby%3Dlastpost%26dateline%3D2592000

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末性置,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子揍堰,更是在濱河造成了極大的恐慌鹏浅,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,576評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件屏歹,死亡現(xiàn)場(chǎng)離奇詭異隐砸,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)蝙眶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)季希,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人幽纷,你說(shuō)我怎么就攤上這事式塌。” “怎么了友浸?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,017評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵峰尝,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我收恢,道長(zhǎng)武学,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,626評(píng)論 1 296
  • 正文 為了忘掉前任伦意,我火速辦了婚禮火窒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘驮肉。我一直安慰自己熏矿,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,625評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布离钝。 她就那樣靜靜地躺著票编,像睡著了一般。 火紅的嫁衣襯著肌膚如雪奈辰。 梳的紋絲不亂的頭發(fā)上栏妖,一...
    開(kāi)封第一講書(shū)人閱讀 52,255評(píng)論 1 308
  • 那天乱豆,我揣著相機(jī)與錄音奖恰,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛瑟啃,可吹牛的內(nèi)容都是我干的论泛。 我是一名探鬼主播,決...
    沈念sama閱讀 40,825評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼蛹屿,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼屁奏!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起错负,我...
    開(kāi)封第一講書(shū)人閱讀 39,729評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤坟瓢,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后犹撒,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體折联,經(jīng)...
    沈念sama閱讀 46,271評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,363評(píng)論 3 340
  • 正文 我和宋清朗相戀三年识颊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了诚镰。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,498評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡祥款,死狀恐怖清笨,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情刃跛,我是刑警寧澤抠艾,帶...
    沈念sama閱讀 36,183評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站奠伪,受9級(jí)特大地震影響跌帐,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜绊率,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,867評(píng)論 3 333
  • 文/蒙蒙 一谨敛、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧滤否,春花似錦脸狸、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,338評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至欲芹,卻和暖如春卿啡,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背菱父。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,458評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工颈娜, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留剑逃,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,906評(píng)論 3 376
  • 正文 我出身青樓官辽,卻偏偏與公主長(zhǎng)得像蛹磺,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子同仆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,507評(píng)論 2 359

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

  • 看了很多視頻萤捆、文章,最后卻通通忘記了俗批,別人的知識(shí)依舊是別人的俗或,自己卻什么都沒(méi)獲得。此系列文章旨在加深自己的印象岁忘,因...
    DCbryant閱讀 1,866評(píng)論 0 4
  • 關(guān)于css3變形 CSS3變形是一些效果的集合蕴侣,比如平移、旋轉(zhuǎn)臭觉、縮放和傾斜效果昆雀,每個(gè)效果都被稱(chēng)作為變形函數(shù)(Tra...
    hopevow閱讀 6,336評(píng)論 2 13
  • CSS里transform變形這個(gè)屬性有點(diǎn)學(xué)習(xí)難度,尤其在CSS3里加上了3D效果之后蝠筑,2維變3維學(xué)習(xí)成本更是成倍...
    張歆琳閱讀 27,879評(píng)論 5 81
  • >*很不幸狞膘,沒(méi)人能告訴你母體是什么,你只能自己體會(huì)* --駭客帝國(guó) 在第四章“可視效果”中什乙,我們研究了一些增強(qiáng)圖層...
    夜空下最亮的亮點(diǎn)閱讀 1,660評(píng)論 0 2
  • 李白 危樓高百尺挽封,手可摘星辰只有你的手可伸入云端你的手開(kāi)滿(mǎn)月光的冰凌花不敢高聲語(yǔ),恐驚天上人也只有你能偷聽(tīng)天人的歌...
    竹無(wú)心a閱讀 886評(píng)論 34 41