一、兩者的主要區(qū)別
先開門見山的說說兩者之間的區(qū)別。
1)CSS動畫:
基于CSS的動畫一般由瀏覽器“主線程”之外的獨立線程處理,在其中執(zhí)行樣式、布局、繪制和 JavaScript。
使用CSS動畫,允許對單個動畫關(guān)鍵幀、持續(xù)時間和迭代進行更多控制。
但缺乏表現(xiàn)力,并且很難有意義地組織動畫,這意味著創(chuàng)造動畫會帶來較高的復(fù)雜度和錯誤率。
2)JavaScript動畫:
在瀏覽器主線程的JavaScript中運行,主線程已經(jīng)忙于運行其他的JavaScript,樣式的計算,布局還有繪制。線程內(nèi)存在資源競爭,這實質(zhì)上增加了掉幀的風(fēng)險。
基于JavaScript的動畫靈活性更高,完全控制元素在每個步驟,能更好的實現(xiàn)復(fù)雜的動畫和大量的交互(例如當(dāng)要求所有的元素在頁面加載時順次加載顯示出來)
對于多元素多步驟的動畫序列、交互拖拽動畫等,用JavaScript實現(xiàn)則是上選。