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

如何使用CSS和GSAP實作樹枝發芽的loader動畫(附原始碼)

不言
發布: 2018-09-13 16:20:33
原創
2061 人瀏覽過

本篇文章帶給大家的內容是關於如何使用CSS和GSAP實現樹枝發芽的loader動畫(附源碼) ,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

效果預覽

如何使用CSS和GSAP實作樹枝發芽的loader動畫(附原始碼)

原始碼下載

https://github.com/comehop​​e/front- end-daily-challenges

程式解讀

定義dom,容器包含2 個元素,branch 代表枝,leaves 代表葉,葉有6 個子元素,代表6 個葉片:

<figure>
    <div></div>
    <div>
        <span></span>
        <span></span>
        <span></span>
        <span></span>
        <span></span>
        <span></span>
    </div>
</figure>
登入後複製

居中顯示:

body {
    margin: 0;
    height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    background-color: black;
}
登入後複製

定義容器尺寸,並設定子元素水平居中:

.sapling {
    position: relative;
    width: 5em;
    height: 17.5em;
    font-size: 10px;
    display: flex;
    justify-content: center;
}
登入後複製

畫出樹枝:

.branch {
    position: absolute;
    width: 0.2em;
    height: inherit;
    border-radius: 25%;
    background: burlywood;
}
登入後複製

定義樹葉容器,設定為葉片在垂直方向均勻分佈,並且從下到上排列:

.leaves {
    position: absolute;
    width: inherit;
    height: 15em;
    top: 1em;
    display: flex;
    flex-direction: column-reverse;
}
登入後複製

設定葉片的尺寸和背景顏色:

.leaves span {
    width: 2.5em;
    height: 2.5em;
    background-color: limegreen;
}
登入後複製

設定左右葉片的各自樣式:

.leaves span:nth-child(odd) {
    border-bottom-left-radius: 3em;
    border-top-right-radius: 3em;
    transform-origin: right bottom;
    align-self: flex-start;
}

.leaves span:nth-child(even) {
    border-bottom-right-radius: 3em;
    border-top-left-radius: 3em;
    transform-origin: left bottom;
    align-self: flex-end;
}
登入後複製

至此,靜態效果繪製完成,接下來開始寫動畫腳本。
引入GSAP 庫:

<script></script>
登入後複製

宣告一個時間軸物件:

let animation = new TimelineMax();
登入後複製

增加樹枝的入場動畫效果,並為這個動畫設定一個標籤branch

animation.from('.branch', 4, {scaleY: 0, ease: Power1.easeOut}, 'branch');
登入後複製

增加樹葉的入場動畫效果,它的參數中有3 個0.5,從左到右的含義分別是動畫時長、多個葉片動畫的間隔時長、相對branch 標籤動畫的延遲時間:

animation.from('.branch', 4, {scaleY: 0, ease: Power1.easeOut}, 'branch')
    .staggerFrom('.leaves span', 0.5, {scale: 0, ease: Power1.easeOut}, 0.5, 0.5, 'branch');
登入後複製

增加葉片變黃的動畫效果:

animation.from('.branch', 4, {scaleY: 0, ease: Power1.easeOut}, 'branch')
    .staggerFrom('.leaves span', 0.5, {scale: 0, ease: Power1.easeOut}, 0.5, 0.5, 'branch')
    .to(['.branch', '.leaves span'], 3, {backgroundColor: 'yellow'});
登入後複製

增加淡出效果:

animation.from('.branch', 4, {scaleY: 0, ease: Power1.easeOut}, 'branch')
    .staggerFrom('.leaves span', 0.5, {scale: 0, ease: Power1.easeOut}, 0.5, 0.5, 'branch')
    .to(['.branch', '.leaves span'], 3, {backgroundColor: 'yellow'})
    .to(['.branch', '.leaves span'], 1, {autoAlpha: 0});
登入後複製

修改聲明時間線的程式碼,使動畫重複播放:

let animation = new TimelineMax({repeat: -1, repeatDelay: 0.5});
登入後複製

大功告成!

相關推薦:

如何使用CSS和GSAP實作有多個關鍵影格的連續動畫(附原始碼)

如何用CSS純程式碼畫一個旋轉的太極圖(附程式碼)

#

以上是如何使用CSS和GSAP實作樹枝發芽的loader動畫(附原始碼)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板