之前我們知道,CSS3動畫效果由3大部分組成:變形、過渡和動畫。前2章,我們已經對變形效果和過渡效果進行詳細地講解。這一章我們來講解CSS3中“真正”的動畫效果。
在CSS3中,動畫效果使用animation屬性來實現。animation屬性和transition屬性功能是相同的,都是通過改變元素的“屬性值”來實現動畫效果。但是這兩者又有很大的區別:transition屬性只能通過指定屬性的開始值與結束值,然後在這兩個屬性值之間進行平滑過渡來實現動畫效果,因此只能實現簡單的動畫效果。animation屬性則通過定義多個關鍵幀以及定義每個關鍵幀中元素的屬性值來實現復雜的動畫效果。
上面這段話非常有價值,裡面涉及新手最容易混淆的問題“animation屬性和transition屬性有什麼區別”中的答案。剛剛開始可能看不懂,但是看完這一章一定要回來好好看看!
先來一個例子,讓大家感受一下CSS3動畫效果的神奇。
舉例:
在線測試<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>CSS3動畫</title> <style type="text/css"> div { width:100px; height:100px; border-radius:50px; background-color:red; } @-webkit-keyframes mycolor { 0%{background-color:red;} 30%{background-color:blue;} 60%{background-color:yellow;} 100%{background-color:green;} } div:hover { -webkit-animation-name:mycolor; -webkit-animation-duration:5s; -webkit-animation-timing-function:linear; } </style> </head> <body> <div></div> </body> </html>
在浏覽器預覽效果如下:
分析:
大家可以看到了,這裡有一個div元素,其背景色為紅色,當鼠標指針移動到div元素上時,元素的背景色將經歷從紅色到藍色、從藍色到黃色、從黃色回到紅色這樣的一系列變化。具體實現原理我們會在接下來章節詳細給大家介紹,在這裡不用糾結。
大家試想一下,如果讓你使用CSS3過渡transition屬性,你可以實現得了麼?當然不行。因為transition屬性只能實現一個變化效果。我們可以這樣理解,transition屬性只能實現簡單的動畫(一個),而animation屬性卻可以實現復雜的動畫(一系列)。
注意:這一章站長為了避免寫過多的兼容代碼,同樣也方便大家學習思路的順暢,建議大家使用chrome浏覽器學習。還是那句話,學習歸學習,但是在實際開發的時候,兼容性處理一定要做到位。