(1)CSS3 Keyframes介紹
Keyframes被稱為關鍵幀,其類似于Flash中的關鍵幀。在CSS3中其主要以“@keyframes”開頭,後面緊跟着是動畫名稱加上一對花括号“{…}”,括号中就是一些不同時間段樣式規則。
@keyframes changecolor{
0%{
background: red;
}
100%{
background: green;
}
}
在一個“@keyframes”中的樣式規則可以由多個百分比構成的,如在“0%”到“100%”之間建立更多個百分比,分别給每個百分比中給需要有動畫效果的元素加上不同的樣式,進而達到一種在不斷變化的效果。
經驗與技巧:在@keyframes中定義動畫名稱時,其中0%和100%還可以使用關鍵詞from和to來代表,其中0%對應的是from,100%對應的是to。
浏覽器的支援情況:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISO5QzMyQDMyEDMyQDM3EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
Chrome 和 Safari 需要字首 -webkit-;Foxfire 需要字首 -moz-。
(2)CSS3中調用動畫
animation-name屬性主要是用來調用 @keyframes 定義好的動畫。需要特别注意:animation-name 調用的動畫名需要和“@keyframes”定義的動畫名稱完全一緻(區分大小寫),如果不一緻将不具有任何動畫效果。
文法:animation-name:none | IDENT[,none|DENT]*;
1、IDENT是由 @keyframes 建立的動畫名,上面已經講過了(animation-name 調用的動畫名需要和“@keyframes”定義的動畫名稱完全一緻);
2、none為預設值,當值為 none時,将沒有任何動畫效果,這可以用于覆寫任何動畫。
注意:需要在 Chrome 和 Safari 上面的基礎上加上-webkit-字首,Firefox加上-moz-。
(3)CSS3中設定動畫播放時間
animation-duration主要用來設定CSS3動畫播放時間,其使用方法和transition-duration類似,是用來指定元素播放動畫所持續的時間長,也就是完成從0%到100%一次動畫所需時間。機關:S秒
文法規則:animation-duration: <time>[,<time>]*
取值<time>為數值,機關為秒,其預設值為“0”,這意味着動畫周期為“0”,也就是沒有動畫效果(如果值為負值會被視為“0”)。
(4)CSS3中設定動畫播放方式
animation-timing-function屬性主要用來設定動畫播放方式。主要讓元素根據時間的推進來改變屬性值的變換速率,簡單點說就是動畫的播放方式。
文法規則:
animation-timing-function: ease | linear |ease-in | ease-out | ease-in-out | cubic-bezier(<number>, <number>,<number>, <number>) [, ease | linear | ease-in | ease-out |ease-in-out | cubic-bezier(<number>, <number>, <number>,<number>)]*
它和transition中的transition-timing-function一樣,具有以下幾種變換方式:ease,ease-in,ease-in-out,ease-out,linear和cubic-bezier。對應函數功能如下:
在調用move動畫播放中,讓元素樣式從初始狀态到終止狀态時,先加速再減速,也就是漸顯漸隐效果。
(5)CSS3中設定動畫開始播放的時間
animation-delay屬性用來定義動畫開始播放的時間,用來觸發動畫播放的時間點。和transition-delay屬性一樣,用于定義在浏覽器開始執行動畫之前等待的時間。
文法規則:animation-delay:<time>[,<time>]*
(6)CSS3中設定動畫播放次數
animation-iteration-count屬性主要用來定義動畫的播放次數。
文法規則:animation-iteration-count:infinite | <number> [, infinite | <number>]*
1、其值通常為整數,但也可以使用帶有小數的數字,其預設值為1,這意味着動畫将從開始到結束隻播放一次。
2、如果取值為infinite,動畫将會無限次的播放。
注意:Chrome或Safari浏覽器,需要加入-webkit-字首!
(7)CSS3中設定動畫播放方向
animation-direction屬性主要用來設定動畫播放方向。
文法:animation-direction:normal| alternate [, normal | alternate]*
其主要有兩個值:normal、alternate
1、normal是預設值,如果設定為normal時,動畫的每次循環都是向前播放;
2、另一個值是alternate,作用是,動畫播放在第奇數次向前播放,第偶數次向反方向播放。
向前播放就是從百分之0到百分之百。向後播放就是從百分之百到百分之0。
例如:通過animation-direction屬性,将move動畫播放動畫方向設定為alternate,代碼為:
animation-direction:alternate;
注意:Chrome或Safari浏覽器,需要加入-webkit-字首!
(8)CSS3中設定動畫的播放狀态
animation-play-state屬性主要用來控制元素動畫的播放狀态。
參數:
其主要有兩個值:running和paused。
其中running是其預設值,主要作用就是類似于音樂播放器一樣,可以通過paused将正在播放的動畫停下來,也可以通過running将暫停的動畫重新播放,這裡的重新播放不一定是從元素動畫的開始播放,而是從暫停的那個位置開始播放。另外如果暫停了動畫的播放,元素的樣式将回到最原始設定狀态。
例如,頁面加載時,動畫不播放。代碼如下:animation-play-state:paused;
(9)CSS3中設定動畫時間外屬性
animation-fill-mode屬性定義在動畫開始之前和結束之後發生的操作。主要具有四個屬性值:none、forwards、backwords和both。其四個屬性值對應效果如下:
屬性值 | 效果 |
none | 預設值,表示動畫将按預期進行和結束,在動畫完成其最後一幀時,動畫會反轉到初始幀處 |
forwards | 表示動畫在結束後繼續應用最後的關鍵幀的位置 |
backwards | 會在向元素應用動畫樣式時迅速應用動畫的初始幀 |
both | 元素動畫同時具有forwards和backwards效果 |
在預設情況之下,動畫不會影響它的關鍵幀之外的屬性,使用animation-fill-mode屬性可以修改動畫的預設行為。簡單的說就是告訴動畫在第一關鍵幀上等待動畫開始,或者在動畫結束時停在最後一個關鍵幀上而不回到動畫的第一幀上。或者同時具有這兩個效果。
例如:讓動畫停在最一幀處。代碼如下:animation-fill-mode:forwards;
附:以上内容整理自慕課網