純CSS3實現圓形進度條動畫


悄悄地,GIF 格式的進度條已經越來越少,CSS 進度條如雨后春筍般涌現。今天要介紹的這個 CSS3 進度條,效果和 Flyme OS 4 上的加載動畫一樣。

首先,來看下最終的效果:

 它的 HTML 結構也很簡單,但不是 Single Element:

<div class="spinner"><i></i></div>

外層元素 .spinner 負責顯示底部的半透明圓環:

.spinner {
    font-size: 20px;
    width: 1em;
    height: 1em;
    border-radius: 50%;
    box-shadow: inset 0 0 0 .1em rgba(58, 168, 237, .2);
}

.spinner 里的 i 元素被裁剪(clip)了一半,並做 0° 至 180° 的順時鍾旋轉:

.spinner i {
    position: absolute;
    clip: rect(0, 1em, 1em, .5em);
    width: 1em;
    height: 1em;
    animation: spinner-circle-clipper 1s ease-in-out infinite;
}

@keyframes spinner-circle-clipper {
    0% {
        transform: rotate(0deg);
    }

    100% {
        transform: rotate(180deg);
    }
}

i 的 :after 偽元素同樣被裁減了一半,並做 -180° 至 180° 的順時鍾旋轉:

.spinner i:after {
    position: absolute;
    clip: rect(0, 1em, 1em, .5em);
    width: 1em;
    height: 1em;
    content: '';
    animation: spinner-circle 1s ease-in-out infinite;
    border-radius: 50%;
    box-shadow: inset 0 0 0 .1em #3aa8ed;
}

@keyframes spinner-circle {
    0% {
        transform: rotate(-180deg);
    }

    100% {
        transform: rotate(180deg);
    }
}

代碼就這么幾行,通過 2 個元素不斷旋轉導致的角度差,配合裁剪就能實現平滑的圓環長度變化效果。

慢動作、放大版:

 PS: 你可以通過更改 .spinner 的 font-size 來縮放進度條的大小~ 

 

轉載自:http://c7sky.com/css3-flyme-loading-spinner.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM