搜尋
首頁web前端css教學css3+js實現3D行星運轉

這次帶給大家css3+js實現3D行星運轉,css3+js實現3D行星運轉的注意事項有哪些,下面就是實戰案例,一起來看一下。

HTML部分

<p>
        </p><p>
            </p><p></p>  
            <p></p>
            <p></p>
            <p></p>
            <p></p>
            <p></p>

            <p></p>
            <p></p>
            <p></p>

            <p></p>
            <p></p>
            <p></p>
    
            <!-- 卫星 -->
            <p>
                </p><p>
                    </p><p></p>
                    <p></p>
                    <p></p>
                    <p></p>
                    <p></p>
                    <p></p>

                    <p></p>
                    <p></p>
                    <p></p>

                    <p></p>
                    <p></p>
                    <p></p>
                
            
        
    

這裡用前三個類別為x、y、z的p來畫的每一個星球的x、 y、z軸,然後這些星球之間是可以嵌套的,就是像上面的程式碼一樣,裡面的星球是外面星球的衛星。

css部分

.path-Saturn, .path-earth, .path-Venus, .path-Neptune, .path-Jupiter, .path-Mercury, .path-satellite, .path-moon{
    position: absolute;
    width: 95%;
    height: 95%;
    top: 2.5%;
    left: 2.5%;
    border: 1px solid #ddd;
    border-radius: 50%;
    transform: rotateX(60deg);
    transform-style: preserve-3d;
}
#sun, #earth, #Saturn, #Venus, #Neptune, #Jupiter, #Mercury, #satellite, #moon{
    width: 160px;
    height: 160px;
    position: absolute;
    transform-style: preserve-3d;
    top: 50%;
    left: 50%;
    margin: -80px 0 0 -80px;
    animation: rotateForward 10s linear infinite;
    cursor: pointer;
    transform: translateZ(-80px);
}
/*x, y, z轴*/
.x, .y, .z{  
    position: absolute;
    height: 100%;
    border: 1px solid #999;
    left: 50%;
    margin-left: -1px;
}
.y{
    transform: rotateZ(90deg);
}
.z{
    transform: rotateX(90deg);
}
@keyframes  rotateForward {
    0%{
        transform: rotate3d(1, 1, 1, 0deg);
    }
    100%{
        transform: rotate3d(1, 1, 1, -360deg);
    }
}
/*Saturn*/
#Saturn{
    width: 80px;
    height: 80px;
    left: 0%;
    margin: -40px 0 0 -40px;
    animation: rotateForward 4s linear infinite;
    transform: translateZ(-40px);
}
#Saturn .space{
    width: 80px;
    height: 80px;
    box-shadow: 0 0 60px rgba(90, 80, 53, 1);
    background-color: rgba(90, 80, 53, .3);
}
#Saturn .space-x1, #Saturn .space-x2, #Saturn .space-y1, #Saturn .space-y2, #Saturn .space-z1, #Saturn .space-z2{
    width: 87.5%;
    height: 87.5%;
    top: 6.25%;
    left: 6.25%;
    transform: rotate3d(0, 0, 0, 0deg) translateZ(20px);
}
#Saturn .space-x1{
    transform: rotate3d(0, 0, 0, 0deg) translateZ(-20px);
}
#Saturn .space-y{
    transform: rotate3d(0, 1, 0, 90deg) translateZ(0px);
}
#Saturn .space-y1{
    transform: rotate3d(0, 1, 0, 90deg) translateZ(-20px);
}
#Saturn .space-y2{
    transform: rotate3d(0, 1, 0, 90deg) translateZ(20px);
}
#Saturn .space-z{
    transform: rotate3d(1, 0, 0, 90deg) translateZ(0px);
}
#Saturn .space-z1{
    transform: rotate3d(1, 0, 0, 90deg) translateZ(-20px);
}
#Saturn .space-z2{
    transform: rotate3d(1, 0, 0, 90deg) translateZ(20px);
}

主要就是用九個面透過各種旋轉、平移來拼湊出一個球體。然後因為這裡沒有寫相容方面的程式碼,所以有興趣down下來源程式碼的朋友,盡量用chrome瀏覽器開啟。這裡有幾個CSS3屬性需要說一下:

1、transform-style: preserve-3d;   用來讓設定了該屬性的容器的子元素以3D效果展示。

2、transform-origin: 設定旋轉元素的旋轉、平移的基點位置。

3、perspective:  設定元素被檢視位置的視圖。

JS部分

(function(planetObj, TimeArr, judgeDirec) {
    //检测参数是否规范
    var timeRegexp = /^[1-9][0-9]*$/,
        direcRegexp = /^[01]$/;
    function checkArgs (arg, ele, regexp) {
        if(arg){
            $(arg).each(function (i, item) {
                if(arg.length != planetObj.length || !regexp.test(item)){
                    throw Error('an error occured');
                    return;
                }else{
                    return arg;
                }
            })
        }else{
            arg = [];
            for(var i = 0; i <p style="text-align: left;">這裡在實現星球運動的時候,有一些地方處理的不是很好,因為我是按照每隔一定的時間,讓星球的left的位置變化,然後根據橢圓的公式,求出top的值。因為橢圓是不均勻的,所以這會讓星球的運動看起來時快時慢,因為他的top值,變化是不均勻的。 </p><p style="text-align: left;">然後這裡還有個地方要注意下,就是Math.sqrt()這個方法開出來的值全是正數,而我們要讓星球環繞一周,就需要在軌蹟的左右兩端動態的改變Math.sqrt()這個方法開出來的值的正負數。 </p><p style="text-align: left;"><strong><span style="color:#ff0000">下面附上一張效果圖</span></strong></p><p style="text-align: left;"><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/061/021/b7e9f0df3dc53824b95c04374a56b9d4-0.png?x-oss-process=image/resize,p_40" class="lazy" alt=""></p><p>#相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章! </p><p>推薦閱讀:</p><p><a href="http://www.php.cn/css-tutorial-389693.html" target="_blank">動態載入css詳解</a></p><p><a href="http://www.php.cn/css-tutorial-389685.html" target="_blank">#CSS3的webkit-tap-highlight-color屬性如何使用</a></p>#

以上是css3+js實現3D行星運轉的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
結識了Skvelte,這是街區上的新框架結識了Skvelte,這是街區上的新框架Apr 11, 2025 am 10:29 AM

在過去的六年中,Vue,Angular和React紮根了前端組件框架的世界。 Google和Facebook有自己的讚助框架,

為什麼JavaScript吃HTML為什麼JavaScript吃HTMLApr 11, 2025 am 10:28 AM

網絡開發總是在變化。最近,尤其是一種趨勢已經變得非常流行,這從根本上違背了關於

控制台命令指南控制台命令指南Apr 11, 2025 am 10:14 AM

多年來,開發人員的調試控制台已在Web瀏覽器中以一種或另一種形式提供。最初是作為錯誤報告的手段

被盜域名的情況被盜域名的情況Apr 11, 2025 am 10:12 AM

早在2011年,該網站的域名CSS-Tricks.com就被盜了。 “劫持域,”他們稱之為。它不僅是這個網站,但大約有12個網站

使用邊緣到邊緣網格的全寬元素使用邊緣到邊緣網格的全寬元素Apr 11, 2025 am 10:09 AM

如果您有一個有限的寬度容器,則說一個集中的文本列,“打破”以使全寬元素涉及欺騙。也許是最好的

創建一個詳細信息,但從未關閉創建一個詳細信息,但從未關閉Apr 11, 2025 am 10:02 AM

HTML中的元素和元素可用於使內容切換到文本部分。默認情況下,您會看到

使用Google電子表格和tabletop.js創建一個可編輯的網頁使用Google電子表格和tabletop.js創建一個可編輯的網頁Apr 11, 2025 am 10:01 AM

如果您曾經面臨過客戶的永無止境的內容修訂請求,請舉手。並不是說變化本身很困難,而是

創新無法保持網絡快速創新無法保持網絡快速Apr 11, 2025 am 09:59 AM

創新的果實每隔一段時間都以改進網絡的基礎層的形式產生果實。 2015年,HTTP/2成為已出版的

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)