教育行業(yè)A股IPO第一股(股票代碼 003032)

全國(guó)咨詢/投訴熱線:400-618-4000

JavaScript動(dòng)畫和CSS3動(dòng)畫有什么區(qū)別?

更新時(shí)間:2021年04月27日17時(shí)06分 來源:傳智教育 瀏覽次數(shù):

1、CSS3動(dòng)畫優(yōu)缺點(diǎn)

優(yōu)點(diǎn):

(1)瀏覽器可以對(duì)動(dòng)畫進(jìn)行優(yōu)化。

·瀏覽器使用與 requestAnimationFrame 類似的機(jī)制,requestAnimationFrame比起setTimeout,setInterval設(shè)置動(dòng)畫的優(yōu)勢(shì)主要是:
1)requestAnimationFrame 會(huì)把每一幀中的所有DOM操作集中起來,在一次重繪或回流中就完成,并且重繪或回流的時(shí)間間隔緊緊跟隨瀏覽器的刷新頻率,一般來說,這個(gè)頻率為每秒60幀。
2)在隱藏或不可見的元素中requestAnimationFrame不會(huì)進(jìn)行重繪或回流,這當(dāng)然就意味著更少的的cpu,gpu和內(nèi)存使用量。

·強(qiáng)制使用硬件加速 (通過 GPU 來提高動(dòng)畫性能)

(2)代碼相對(duì)簡(jiǎn)單,性能調(diào)優(yōu)方向固定

(3)對(duì)于幀速表現(xiàn)不好的低版本瀏覽器,CSS3可以做到自然降級(jí),而JS則需要撰寫額外代碼

缺點(diǎn):

(1)運(yùn)行過程控制較弱,無法附加事件綁定回調(diào)函數(shù)。CSS動(dòng)畫只能暫停,不能在動(dòng)畫中尋找一個(gè)特定的時(shí)間點(diǎn),不能在半路反轉(zhuǎn)動(dòng)畫,不能變換時(shí)間尺度,不能在特定的位置添加回調(diào)函數(shù)或是綁定回放事件,無進(jìn)度報(bào)告。

(2)代碼冗長(zhǎng)。想用 CSS 實(shí)現(xiàn)稍微復(fù)雜一點(diǎn)動(dòng)畫,最后CSS代碼都會(huì)變得非常笨重。


2、JS動(dòng)畫優(yōu)缺點(diǎn)

優(yōu)點(diǎn):

(1)JavaScript動(dòng)畫控制能力很強(qiáng), 可以在動(dòng)畫播放過程中對(duì)動(dòng)畫進(jìn)行控制:開始、暫停、回放、終止、取消都是可以做到的。

(2)動(dòng)畫效果比css3動(dòng)畫豐富,有些動(dòng)畫效果,比如曲線運(yùn)動(dòng),沖擊閃爍,視差滾動(dòng)效果,只有JavaScript動(dòng)畫才能完成。

(3)CSS3有兼容性問題,而JS大多時(shí)候沒有兼容性問題。

缺點(diǎn):

(1)JavaScript在瀏覽器的主線程中運(yùn)行,而主線程中還有其它需要運(yùn)行的JavaScript腳本、樣式計(jì)算、布局、繪制任務(wù)等,對(duì)其干擾導(dǎo)致線程可能出現(xiàn)阻塞,從而造成丟幀的情況。

(2)代碼的復(fù)雜度高于CSS動(dòng)畫

總結(jié):如果動(dòng)畫只是簡(jiǎn)單的狀態(tài)切換,不需要中間過程控制,在這種情況下,css動(dòng)畫是優(yōu)選方案。它可以讓你將動(dòng)畫邏輯放在樣式文件里面,而不會(huì)讓你的頁面充斥 Javascript 庫。然而如果你在設(shè)計(jì)很復(fù)雜的富客戶端界面或者在開發(fā)一個(gè)有著復(fù)雜UI狀態(tài)的APP。那么你應(yīng)該使用js動(dòng)畫,這樣你的動(dòng)畫可以保持高效,并且你的工作流也更可控。所以,在實(shí)現(xiàn)一些小的交互動(dòng)效的時(shí)候,就多考慮考慮CSS動(dòng)畫。

對(duì)于一些復(fù)雜控制的動(dòng)畫,使用javascript比較可靠。


3、css動(dòng)畫和js動(dòng)畫的差異

(1)代碼復(fù)雜度:js動(dòng)畫代碼相對(duì)復(fù)雜一些 。

(2)動(dòng)畫運(yùn)行時(shí):對(duì)動(dòng)畫的控制程度上,js能夠讓動(dòng)畫,暫停,取消,終止,css動(dòng)畫不能添加事件。

(3)動(dòng)畫性能看:js動(dòng)畫多了一個(gè)js解析的過程,性能不如css動(dòng)畫好。



猜你喜歡:

CSS3相比CSS有哪些優(yōu)勢(shì)?

CSS是什么意思?史上最詳細(xì)介紹

Js中深拷貝與淺拷貝的區(qū)別

什么是Vue?Vue的工作原理是什么?

傳智教育HTML&JS+前端培訓(xùn)課程

0 分享到:
和我們?cè)诰€交談!