1. 程式人生 > >CSS關鍵幀動畫

CSS關鍵幀動畫

mil 模式 stat 行為 auto 完成 UNC 復合 獲得

1、@keyframes 設定動畫規則。

2、animation 所有動畫屬性的簡寫屬性,用於設置六個動畫屬性:

animation-name/animation-duration/animation-timing-function/animation-delay/

animation-iteration-count/animation-direction

3、animation-name 屬性為@keyframes 動畫規則名稱。若設置為none則覆蓋已有的動畫效果。

4、animation-duration 規定動畫完成一個周期所花費的秒或毫秒。默認是0。

5、animation-timing-function 規定動畫的速度曲線。默認是“ease”。

(1) linear規定以相同速度開始至結束的過度效果(等於cubic-bezier(0,0,1,1))。

(2) ease 規定慢速開始,然後變快,然後慢速結束的動畫效果。(等於cubic-bezier(0.25,0.1,0.25,1))

(3) ease-in 規定以慢速度開始的過度效果。(等於cubic-bezier(0.42,0,1,1))

(4) ease-out 規定以慢速度結束的過度效果。(等於cubic-bezier(0,0,0.5,1))

(5) ease-in-out 規定以慢速度開始和結束的過渡效果。(等於cubic-bezier(0.42,0,0.58,1))

(6) cubic-bezier(n,n,n,n) 在cubic-bezier函數中定義自己的值。可能的值是0至1之間的數值。

6、animation-delay 規定動畫何時開始。默認是0。

7、animation-iteration-count 規定動畫被播放的次數。默認是1。infinite為無限次數播放。

8、animation-direction 規定動畫是否在下一周期逆向播放。默認是“normal順序播放”。/alternate動畫應該輪流反向播放。

9、animation-play-state 規定動畫是否在運行或暫停。默認是“running規定動畫正在播放。”/paused規定動畫暫停。

10、animation-fill-mode 規定對象動畫時間之外的狀態。

(1) none 不改變默認行為。

(2) forwards 當動畫完成後,保持最後一個屬性值(在最後一個關鍵幀中定義)。

(3) backwards 在animation-delay 所指的一段時間內,在動畫顯示之前,應用開始屬性值(在第一個關鍵幀中定義)。

(4) both 向前和向後填充模式都被應用。

案例:

#div1{

width: 150px;

height: 150px;

background: aqua;

border: #996633 3px double;

/*設置動畫的名稱和事件*/

animation-name: mydh;

animation-duration: 3s;

animation-timing-function:linear; /*規定動畫的速度曲線*/

animation-delay:1s;/*規定動畫何時開始。默認是0。*/

animation-iteration-count:3;/*規定動畫被播放的次數。默認是1。infinite為無限次數播放。*/

animation-direction:alternate; /*規定動畫是否在下一周期逆向播放。默認是“normal順序播放”。/alternate動畫應該輪流反向播放。*/

animation-fill-mode:forwards;/*規定對象動畫時間之外的狀態。*/

}

#div2{

margin-top: 30px;

width: 150px;

height: 150px;

background: yellow;

border: green 3px double;

/*復合屬性*/

animation: mydh 8s ease 0s 4 alternate;

}

/*設置動畫起始位置*/

@keyframes mydh{

/*第一種動畫方式*/

/* from{

margin-left: 20px;

background: yellow;

}

to{

margin-left: 800px;

background: yellowgreen;

} */

/*第二種動畫方式*/

0%{

margin-left: 20px;

background: yellow;

}

50%{

margin-left: 300px;

background: orange;

}

100%{

margin-left: 800px;

background: yellowgreen;

}

}

實例:圖片翻轉

*{

margin: 0;

padding: 0;

}

img{

width:100%;

height: 100%;

}

div{

width: 300px;

height: 450px;

margin-left: auto;

margin-right: auto;

border: 3px aqua double;

/*添加動畫*/

animation: fz 12s infinite;

}

body{perspective: 500px;/*子元素會獲得透視效果*/}

@keyframes fz{

0%{transform: rotateY(45deg);}

20%{transform: rotateY(180deg);}

40%{transform: rotateY(360deg);}

60%{transform: rotateX(45deg);}

80%{transform: rotateX(180deg);}

90%{transform: rotateX(360deg);}

100%{transform: rotateX(360deg);}

}

CSS關鍵幀動畫