CSS3 加載動畫

前兩篇博客講了一些 CSS 形狀的基礎知識,如果結合 CSS3 動畫還能做出各種加載動畫來,比起用 gif 動畫更優雅更節省資源性能也更好。

先來一個比較簡單的:


.spin-1 {
    position: relative;
    width: 5em;
    height: 5em;
    border-left: 1em solid #eeeeee;
    border-top: 1em solid #eeeeee;
    border-bottom: 1em solid #eeeeee;
    border-right: 1em solid #cccccc;
    border-radius: 999em;
    -webkit-animation: spin 1s infinite linear;
    animation: spin 1s infinite linear;
}

@-webkit-keyframes spin {
    0% {
        -webkit-transform: rotate(0deg);
        transform: rotate(0deg);
    }

    100% {
        -webkit-transform: rotate(360deg);
        transform: rotate(360deg);
    }
}

@keyframes spin {
    0% {
        -webkit-transform: rotate(0deg);
        transform: rotate(0deg);
    }

    100% {
        -webkit-transform: rotate(360deg);
        transform: rotate(360deg);
    }
}

這個比較簡單就不詳細說了,下面說一個稍微復雜點的,就是類似 Facebook 的加載動畫,Facebook 的是這樣的:


.loader, .loader:before, .loader:after {
    width: 1em;
    height: 4em;
    background: #000000;
    -webkit-animation: loading 1s infinite ease-in-out;
    animation: loading 1s infinite ease-in-out;
}

.loader {
    position: relative;
    -webkit-animation-delay: -0.16s;
    animation-delay: -0.16s;
}

.loader:before, .loader:after {
    position: absolute;
    top: 0px;
    content: '';
}

.loader:before {
    left: -1.5em;
    -webkit-animation-delay: -0.32s;
    animation-delay: -0.32s;
}

.loader:after {
    left: 1.5em;
}

@-webkit-keyframes loading {
    0%, 100% {
        box-shadow: 0px 0px;
        height: 4em;
    }

    50% {
        box-shadow: 0px -2em;
        height: 5em;
    }
}

@keyframes loading {
    0%, 100% {
        box-shadow: 0px 0px;
        height: 4em;
    }
  
    50% {
        box-shadow: 0px -2em;
        height: 5em;
    }
}

大致的思路是先畫中間的一豎,然后 ::before 和 ::after 分別畫左邊和右邊兩豎,通過改變 box-shadow 來放大縮小,再通過 animation-delay 來使三豎有時間差,動畫里還可以添加顏色改變來達到 Facebook 這種顏色漸變的效果。

下次再說點更復雜的加載動畫。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容