CSS3 太陽系星球旋轉效果
分享一段程式碼例項,它利用CSS3模擬實現了太陽系星球相互環繞旋轉效果。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style> *{ margin: 0; padding: 0; } body{ background-color: #000; } div{ border-radius: 50%; } .sun{ position: absolute; left:50%; top:50%; transform:translate(-50%,-50%); width: 100px; height: 100px; background-color: yellow; border-radius: 50%; box-shadow: 0 0 20px 1px red; } /*地球*/ .earth{ position: absolute; width: 180px; height: 180px; border: 1px solid #fff; transform: translate(-50%,-50%); left: 50%; top: 50%; animation: autoPlay 3s linear infinite ; } .earth::before{ content: ''; position: absolute; width: 40px; height: 40px; top: 50%; transform: translate(-50%,-50%); border-radius: 50%; background-color: deepskyblue; box-shadow:0px 0px 10px 1px blue ; } /*月球*/ .moon{ position: absolute; width: 60px; height: 60px; transform: translate(-50%,-50%); top: 50%; animation: autoPlay 2s linear infinite ; } .moon::before{ content: ''; position: absolute; width: 10px; height: 10px; top: 50%; border-radius: 50%; transform: translate(-50%,-50%); background-color: #fff; box-shadow:0px 0px 10px 1px #fff ; } /*火星*/ .mark{ position: absolute; width: 320px; height: 320px; border: 1px solid #fff; transform: translate(-50%,-50%); left: 50%; top: 50%; animation: autoPlay 6s linear infinite ; } .mark::before{ content: ''; position: absolute; width: 50px; height: 50px; top: 50%; transform: translate(-50%,-50%); border-radius: 50%; background-color: red; box-shadow:0px 0px 10px 1px #ff5227; } /*金星*/ .vnues{ position: absolute; width: 500px; height: 500px; border: 1px solid #fff; transform: translate(-50%,-50%); left: 50%; top: 50%; animation: autoPlay 8s linear infinite ; } .vnues::before{ content: ''; position: absolute; width: 70px; height: 70px; top: 50%; transform: translate(-50%,-50%); border-radius: 50%; background-color: gold; box-shadow:0px 0px 10px 1px #fff232; } @keyframes autoPlay { 0%{ transform: translate(-50%,-50%) rotate(0deg) ; } 100%{ transform: translate(-50%,-50%) rotate(360deg) ; } } </style> </head> <body> <div class="sun"></div> <div class="earth"> <div class="moon"></div> </div> <div class="mark"></div> <div class="vnues"></div> </body> </html>
上面程式碼實現了預期效果,下面介紹一下它的實現過程。
[CSS] 純文字檢視 複製程式碼*{ margin: 0; padding: 0; }
簡單初始化效果,將所有元素內邊距和外邊距設定為0。
[CSS] 純文字檢視 複製程式碼body{ background-color: #000; }
設定body的背景顏色。
[CSS] 純文字檢視 複製程式碼div{ border-radius: 50%; }
將所有的div元素都設定為圓形,這裡星球和星系軌道都設定為圓的。
[CSS] 純文字檢視 複製程式碼.sun{ position: absolute; left:50%; top:50%; transform:translate(-50%,-50%); width: 100px; height: 100px; background-color: yellow; border-radius: 50%; box-shadow: 0 0 20px 1px red; }
實現了中心的太陽效果。
將其設定為絕對定位,然後left和top值都為50%,這樣元素的左上角(假設為矩形)處於body的中心位置。
transform:translate(-50%,-50%)將位置再分別向左和向上移動一半的寬度和高度,元素就中心居中了。
最後通過box-shadow將其設定的有點發光效果。
[CSS] 純文字檢視 複製程式碼.earth{ position: absolute; width: 180px; height: 180px; border: 1px solid #fff; transform: translate(-50%,-50%); left: 50%; top: 50%; animation: autoPlay 3s linear infinite ; }
地球執行的軌道,視覺上是地球在旋轉,實際上是這個軌道在旋轉。
軌道和太陽形成了同心圓,實現原理是相同的。
最後以動畫方式實現此軌道每3秒旋轉一圈。
[CSS] 純文字檢視 複製程式碼.earth::before{ content: ''; position: absolute; width: 40px; height: 40px; top: 50%; transform: translate(-50%,-50%); border-radius: 50%; background-color: deepskyblue; box-shadow:0px 0px 10px 1px blue ; }
通過偽元素選擇器,在軌道上新增藍色地球。
它是絕對定位,這樣位移參考物件就是它的父元素,也就是地球軌道。
然後通過定位和transform將其圓心定位到軌道的左側;軌道的旋轉達成了視覺上地球的旋轉。
二.相關閱讀:
(1).border-radius參閱CSS3 border-radius一章節。
(2).絕對定位參閱CSS position:absolute 絕對定位一章節。
(3).transform參閱CSS3 transform一章節。
(4).box-shadow參閱CSS3 box-shadow一章節。
(5).animation參閱CSS3 animation一章節。
(6).@keyframes參閱CSS3 @keyframes一章節。
相關文章
- canvas實現太陽、地球和月亮旋轉效果Canvas
- css地球月亮太陽環繞旋轉CSS
- canvas旋轉太極圖效果Canvas
- CSS3 旋轉魔方效果CSSS3
- css3實現旋轉的太極圖效果程式碼例項CSSS3
- canvas繪製太陽系運動效果Canvas
- CSS3圖片旋轉效果CSSS3
- CSS3多面體旋轉效果CSSS3
- CSS3星系旋轉效果代CSSS3
- CSS3旋轉載入等待效果CSSS3
- CSS3 圓環內部旋轉效果CSSS3
- CSS3地月星系旋轉效果CSSS3
- HTML+CSS實現太極旋轉效果HTMLCSS
- canvas實現的旋轉太極圖效果Canvas
- CSS3滑鼠懸浮div旋轉效果CSSS3
- css3實現環狀旋轉效果CSSS3
- CSS3旋轉風車效果程式碼CSSS3
- CSS3旋轉效果程式碼例項CSSS3
- CSS3 3d旋轉魔方效果CSSS33D
- CSS3旋轉大風車效果詳解CSSS3
- CSS3扇形旋轉效果詳解CSSS3
- css3實現的旋轉的陀螺效果CSSS3
- css3點狀旋轉載入等待效果CSSS3
- CSS3邊框旋轉動畫實現效果CSSS3動畫
- CSS3圓形旋轉變大動畫效果CSSS3動畫
- css3實現的立方體旋轉效果CSSS3
- CSS3花瓣狀360度不停旋轉效果CSSS3
- 簡單的css3頭像旋轉與3D旋轉效果CSSS33D
- CSS3立方體3D旋轉效果CSSS33D
- CSS3 螺旋旋轉黑白相間條紋效果CSSS3
- CSS3實現的3D旋轉效果CSSS33D
- css3實現的旋轉載入等待效果CSSS3
- canvas繪製太陽系Canvas
- 一個太陽系HTMLHTML
- CSS3 旋轉太極八卦圖程式碼例項CSSS3
- css3實現旋轉loadding載入效果CSSS3
- jQuery和css3實現的摩天輪旋轉效果jQueryCSSS3
- js和css3實現360旋轉滾動效果JSCSSS3