1. 程式人生 > 實用技巧 >CSS 動畫分類

CSS 動畫分類

css動畫主要分為css動畫分類和CSS 常用動畫庫簡介與js動畫;然後CSS 動畫分類又分為過渡動畫transition和關鍵幀動畫keyframes,keyframes主要是從keyframes規則和keyframes屬性來介紹。CSS 常用動畫簡介庫簡介與js動畫主要是Animate.css 的引入、Animate.css 使用舉例和JS 動畫。

首先,CSS動畫分類的基本概念:

1 過渡動畫(transition)

從初始狀態過渡到結束狀態所產生的動畫,它只能定義初始和借宿兩個狀態,不能定義中間狀態,它是一種很簡單的最基礎的css動畫,這個過渡動畫只能被動觸發,不能主動觸發,而且也不能重複發生。被動觸發一次,它發生一次,不能重複。

2 關鍵幀動畫(Animation)

使用關鍵幀@keyframes,在關鍵幀裡面的寫法如下:

在每一個階段我們可以定義不同的元素狀態,也就是css,這樣就大大增強了css的動畫能力。

總結起來就是:可以定義多個狀態,可以實現更復雜的效果,相對於transition它可以主動的觸發,也可以重複發生。

@keyframes 動畫名稱 {
    時間點 {
		元素狀態
	}
    時間點 {
		元素狀態
	}
    時間點 {
		元素狀態
	}
    時間點 {
		元素狀態
	}
    …
}

其次瀏覽器支援

完全支援該屬性的第一個瀏覽器版本

基本語法

.main {
   animation: animationname(動畫名字) duration(持續時間) timing-function(時間運動曲線) delay(延遲) iteration-count(總共重複的次數) direction(方向,正向播放還是反向播放) fill-mode(定義開始和結束的狀態) play-state(是否停止或執行這個動畫);
}
    
 //animationname是和keyframes繫結的,在animationname下面定義動畫的狀態,一種是from...to從開始到結束,這個是和transition一樣的,一種是百分比,從0%到100%,可以定義任意的中間狀態。
@keyframes animationname {
    from { css-code }
    to { css-code }
    
    0% - 100% { css-code }
}

1 animationname - 關鍵幀名稱

    .main {
        animation-name: round;
        animation-duration: 5s;
        animation-iteration-count: infinite;
    }
    
    @keyframes round {
        from { css-code }
        to { css-code }
    
        0% - 100% { css-code }
    }

2 duration - 動畫持續時間(單位:s/ms)

    .main {
         width: 100px;
         height: 100px;
         background: red;
         position: relative;
         animation-name: round;
         animation-duration: 500ms;
         animation-iteration-count: infinite;
     }
     @keyframes round {
         0%  {
               top: 0%;
               left: 0%;
               background: red;
         }
         25% {
               top: 0%;
               left: calc(100% - 100px);
               background: blue;
         }
         50% {
               top: calc(100% - 100px);
               left: calc(100% - 100px);
               background: yellow;
         }
         75% {
               top: calc(100% - 100px);
               left: 0%;
               background: green;
         }
         100% {
               top: 0%;
               left: 0%;
               background: red;
         }
     }

3 timing-function - 時間函式曲線

    .main {
        animation-name: round;
        animation-duration: 5s;
        animation-iteration-count: infinite;
        animation-timing-function: cubic-bezier(0.075, 0.82, 0.165, 1);   //貝塞爾曲線
    }

timing-function 在animation裡面的時間區間是兩套css樣式之間 ** **4 delay - 動畫開始延遲時間(單位:s/ms)

僅定義第一次開始延遲時間

    .main {
        animation-name: round;
        animation-duration: 5s;
        animation-iteration-count: infinite;
        animation-timing-function: cubic-bezier(0.075, 0.82, 0.165, 1);
    	animation-delay: 3s;
    }

5 iteration-count - 動畫播放次數

    .main {
        animation-name: round;
        animation-duration: 5s;
        animation-iteration-count: infinite;
        animation-timing-function: cubic-bezier(0.075, 0.82, 0.165, 1);
        animation-delay: 3s;
    }

在transition裡面是不能定義播放次數的,但是animation可以,它可以定義兩種:一種是具體的播放次數(n),一種是無限迴圈(infinite)。

資源搜尋網站大全 https://www.renrenfan.com.cn 廣州VI設計公司https://www.houdianzi.com

6 direction - 動畫播放方向

動畫實際上是相對於時間來講的,它的播放方向就是正向還是反向播放。它有四個值,分別是:

normal(正常播放)、reverse(反向播放)、alternate(奇數次正向,偶數次反向)、alternate-reverse(偶數次正向,奇數次反向)。

    .main {
        animation-name: round;
        animation-duration: 5s;
        animation-iteration-count: infinite;
        animation-timing-function: cubic-bezier(0.075, 0.82, 0.165, 1);
        animation-delay: 3s;
        animation-direction: alternate;
    }

7 fill-mode - 動畫不播放時應用到元素的樣式

分為兩個狀態,一個是還沒有開始放,另一個是放完了,也就是說它的迴圈次數不是無限次的,那麼對應的有兩個值比較關鍵:forwards 動畫結束後動畫將應用該屬性值,也就是說動畫播放完了,我們繼續保留這個屬性;backwards 動畫開始前應用第一幀的樣式,比如說本來有一個樣式,然後有一個動畫,動畫沒開始,這時我們就需要把動畫的第一幀應用到當前的這個元素上。除此之外呢,還有一個none 兩個都不用也就是動畫結束後恢復原有樣式以及both 兩個都用。

    .main {
        animation-name: round;
        animation-duration: 5s;
        animation-iteration-count: infinite;
        animation-timing-function: cubic-bezier(0.075, 0.82, 0.165, 1);
        animation-delay: 3s;
        animation-direction: alternate;
        animation-fill-mode: forwards;
    }

8 play-state - 控制動畫執行或暫停

有兩個值:paused 暫停running 執行。play-state一般應用於JS,應用js來控制css是否執行。