效果靜態(tài)圖:
動(dòng)畫(huà)中包括:太陽(yáng)及各行星,運(yùn)行軌道,行星公轉(zhuǎn)動(dòng)畫(huà)。
先畫(huà)好草圖,設(shè)計(jì)好大小和位置,根據(jù)公轉(zhuǎn)周期計(jì)算好動(dòng)畫(huà)執(zhí)行的時(shí)間。
html的結(jié)構(gòu):
一個(gè)class為solarsys的div,作為太陽(yáng)系容器元素,該div的position為relative。
行星軌道和行星都用div,position為absolute。
容器用relative和內(nèi)部元素采用absolute的定位方式,比較簡(jiǎn)單的能實(shí)現(xiàn)效果,缺點(diǎn)就是大小是固定的。
太陽(yáng)系容器div的css:
定寬,定高,relative定位,頁(yè)面內(nèi)劇中對(duì)齊。
.solarsys{ width: 800px; height: 800px;; position: relative; margin: 0 auto; background-color: #000000; padding: 0; transform: scale(1); }
太陽(yáng)div的css:
按照設(shè)計(jì)的大小和位置,設(shè)定寬高,left,top。
設(shè)定顏色。
通過(guò)把boder-radius生成50%,把一個(gè)正方形變成圓形。
通過(guò)box-shadow的4層顏色設(shè)置實(shí)現(xiàn)太陽(yáng)光暈。
.sun { left:357px; top:357px; height: 90px; width: 90px; background-color: rgb(248,107,35); border-radius: 50%; box-shadow: 5px 5px 10px rgb(248,107,35), -5px -5px 10px rgb(248,107,35), 5px -5px 10px rgb(248,107,35), -5px 5px 10px rgb(248,107,35); position: absolute; margin: 0; }
行星軌道div的css:
假設(shè)是水星軌道。
按照設(shè)計(jì)的大小和位置,設(shè)定寬高,left,top。
背景色透明。
通過(guò)把boder-radius生成50%,把一個(gè)正方形變成圓形。
boder的類型設(shè)成虛線。
boder的顏色設(shè)成灰色。
寬度設(shè)1。
.mercuryOrbit { left:342.5px; top:342.5px; height: 115px; width: 115px; background-color: transparent; border-radius: 50%; border-style: dashed; border-color: gray; position: absolute; border-width: 1px; margin: 0px; padding: 0px; }
行星div的css:
假設(shè)是水星。
按照設(shè)計(jì)的大小和位置,設(shè)定寬高,left,top。
設(shè)置顏色。
通過(guò)把boder-radius生成50%,把一個(gè)正方形變成圓形。
將transfrom-origin設(shè)定成當(dāng)前div的左上角相對(duì)于整個(gè)太陽(yáng)系容器的中心點(diǎn)的橫向和縱向的偏移量。加上旋轉(zhuǎn)動(dòng)畫(huà)后就是圍繞著中心點(diǎn)旋轉(zhuǎn)效果。
做一個(gè)animation,引用rotate關(guān)鍵幀動(dòng)畫(huà),線性永久執(zhí)行,這里的執(zhí)行時(shí)長(zhǎng)是根據(jù)行星的公轉(zhuǎn)周期計(jì)算出來(lái)。
.mercury { left:337.5px; top:395px; height: 10px; width: 10px; background-color: rgb(166,138,56); border-radius: 50%; position: absolute; transform-origin: 62.5px 5px; animation: rotate 1.5s infinite linear; }
rotate關(guān)鍵幀動(dòng)畫(huà):
逆時(shí)針旋轉(zhuǎn)。
@keyframes rotate { 100% { transform: rotate(-360deg); } }
基本結(jié)構(gòu)完成。
僅在chrome中測(cè)試過(guò)。
全部代碼:
Top