jQuery Animation的工作原理是透過將元素的CSS樣式從一個狀態改變為另一個狀態。 CSS屬性值是逐漸改變的,這樣就可以創造出動畫效果。只有數字值可建立動畫(例如 "margin:30px")。字串值無法建立動畫(例如 "background-color:red")。詳細用法請參考jQuery 效果 - animate()方法和官方教學。
像CSS3好多效果因為不是數值的,所以是沒有辦法直接透過animate()方法實現的。如translate(), rotate(), scale(), skew(), matrix(), rotateX(), rotateY()等方法,這些方法的一個特點就是它們的值是字元和數字混合在一起的。因此我們是不可以直接用animate()方法來動態地修改它們的值來實現動畫的效果。
如果我們自己用JavaScript實作CSS3動畫,那麼我們只能自已透過setInterval()方法來實現,實作起來比較複雜。其實animate()方法就是基於setInterval()方法進行工作的,但是可以用方便的設定動畫速度,還可以設定是勻速還是變速。 animate()方法的第二種用法有個step參數規定動畫的每一步要執行的函數。我們可以用使用一個不影響元素效果顯著的CSS值來觸發animate()方法,然後在step回呼函數中修改我們想要修改的值,這樣就可以間接地實作動畫了。請看transform範例: