JS動畫:瀏覽器
缺點:1.JS在瀏覽器的主線程中運行,而主線程還有其餘的js腳本,樣式佈局,繪製任務等,對其干擾可能致使線程出現阻塞,從而形成丟幀的狀況。函數
2.JS動畫代碼複雜度高於CSS3動畫。佈局
優勢:1.JS動畫控制能力很強,能夠在動畫播放過程當中對動畫進行控制,使其開始或中止。優化
2.動畫效果比CSS3動畫豐富,有些動畫只有JS動畫才能實現,好比曲線運動,衝擊閃爍等。動畫
3.CSS3有兼容性問題,而JS大多時候沒有兼容性問題。線程
CSS3動畫:設計
缺點:事件
1.運行過程較弱,沒法附加綁定回調函數,CSS3動畫只能暫停,不能在動畫中尋找一個特定的事件點,不能在半路反轉動畫,不能變換事件尺度,不能在特定的位置添加回調函數或是綁定回放事件,無進度報告。開發
2.代碼冗長。想用CSS3實現稍微複雜一點的動畫,最後CSS代碼都會變得特別笨重。回調函數
優勢:
1.瀏覽器能夠對動畫進行優化。
結論:
若是動畫只是簡單的狀態切換,不須要中間過程控制,在這種狀況下,CSS3動畫是優先選擇方案。它能夠讓你將動畫邏輯放在樣式文件裏面,而不會讓你的頁面充斥JS庫。然而若是你在設計很複雜的富客戶端界面或者開發一個有着複雜UI狀態的APP,那麼你應該使用JS動畫,這樣你的動畫能夠保持高效,而且你的工做流也更可控。因此,在實現一些小的交互動效的時候,就多多考慮CSS3動畫,對於一些複雜控制的動畫,使用JS動畫比較可靠。