首頁 > web前端 > css教學 > 主體

中秋獻禮,分享一個CSS日地月公轉動畫效果!

青灯夜游
發布: 2021-09-23 09:50:14
轉載
2471 人瀏覽過

中秋節快到了,以下這篇文章跟大家分享一個純CSS實現的日地月公轉動畫效果,打開快來學習一下!

中秋獻禮,分享一個CSS日地月公轉動畫效果!

為了這次掘金的中秋活動,我也算是苦思冥想了兩天,終於想到了一個在掘金沒見人做過的東西(應該沒做過吧,我也不知道)—— 用HTML CSS 模擬日地月的公轉。 【相關推薦:《css影片教學》】

我們都知道中秋的月亮又大又圓,是因為太陽地球月亮在公轉過程中處在了一條直線上,地球在中間,太陽和月球分別在地球的兩端,這天的月相便是滿月。這段可以略過,是為了跟中秋扯上關係。

但因為我根本沒咋學過前端,這兩天惡補了一下重學了flexboxgrid ,成果應該說還挺好看(如果我的審美觀沒有問題的話)。

配色我還蠻喜歡的,希望你也喜歡。

原始碼我放到了CodePen 上,連結Sun Earth Moon (codepen.io)

HTML

重點是CSS,HTML放上三個div 就ok了。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8"/>
        <title>Mancuoj</title>
        <link
            href="simulation.css"
            rel="stylesheet"
        />
    </head>

    <body>
        <h1>Mancuoj</h1>
        <figure>
            <div></div>
            <div>
                <div></div>
            </div>
        </figure>
    </body>
</html>
登入後複製

背景和文字

導入我最喜歡的 Lobster 字體,然後設為白色,字體更細一點。

@import url("https://fonts.googleapis.com/css2?family=Lobster&display=swap");

h1 {
    color: white;
    font-size: 60px;
    font-family: Lobster, monospace;
    font-weight: 100;
}
登入後複製

背景隨便找了一個偏黑紫色,然後把畫的內容設定到中間。

body {
    margin: 0;
    height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    background-color: #2f3141;
}

.container {
    font-size: 10px;
    width: 40em;
    height: 40em;
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
}
登入後複製

日地月動畫

#眾所周知:地球繞著太陽轉,月球繞著地球轉。

我們畫的是公轉,太陽就直接畫出來再加個陰影高光,月亮地球轉就可以了。

最重要的其實是配色(文章最後有推薦網站),我實驗好長時間的配色,最後用了三個漸層色來表示日地月。

日: linear-gradient(#fcd670, #f2784b);
地: linear-gradient(#19b5fe, #7befb2);
月: linear-gradient(#8d6e63, #ffe0b2);
登入後複製

CSS 應該難不到大家,隨便看看。

軌道用到了 border,用銀色線條當作公轉的軌跡。

動畫用到了自備的 animation ,每次旋轉一週。

.sun {
    position: absolute;
    width: 10em;
    height: 10em;
    background: linear-gradient(#fcd670, #f2784b);
    border-radius: 50%;
    box-shadow: 0 0 8px 8px rgba(242, 120, 75, 0.2);
}

.earth {
    --diameter: 30;
    --duration: 36.5;
}

.moon {
    --diameter: 8;
    --duration: 2.7;
    top: 0.3em;
    right: 0.3em;
}

.earth,
.moon {
    position: absolute;
    width: calc(var(--diameter) * 1em);
    height: calc(var(--diameter) * 1em);
    border-width: 0.1em;
    border-style: solid solid none none;
    border-color: silver transparent transparent transparent;
    border-radius: 50%;
    animation: orbit linear infinite;
    animation-duration: calc(var(--duration) * 1s);
}

@keyframes orbit {
    to {
        transform: rotate(1turn);
    }
}

.earth::before {
    --diameter: 3;
    --color: linear-gradient(#19b5fe, #7befb2);
    --top: 2.8;
    --right: 2.8;
}

.moon::before {
    --diameter: 1.2;
    --color: linear-gradient(#8d6e63, #ffe0b2);
    --top: 0.8;
    --right: 0.2;
}

.earth::before,
.moon::before {
    content: "";
    position: absolute;
    width: calc(var(--diameter) * 1em);
    height: calc(var(--diameter) * 1em);
    background: var(--color);
    border-radius: 50%;
    top: calc(var(--top) * 1em);
    right: calc(var(--right) * 1em);
}
登入後複製

總結

參加活動真不容易,不過前端還蠻好玩的。

推薦幾個我找顏色的網站吧:

#原文網址:https ://juejin.cn/post/7006507905050492935

作者:Mancuoj

##更多程式相關知識,請造訪:
程式設計入門

! !

以上是中秋獻禮,分享一個CSS日地月公轉動畫效果!的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
css
來源:掘金--Mancuoj
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!