2013-01-22 16 views
1

可能重複CSS轉換:
Is it better to use jQuery fadeIn or CSS3 animations?
what’s faster? CSS3 transitions or jQuery animations?哪個更好:Jquery.animate()或setTimeout的

我試圖做一個動畫和速度的本質。我已經嘗試過兩種方法,但是我想知道哪一種更有效。

方法1:使用Jquery.animate() 我的代碼看起來是這樣的:

$("div").animate({opacity: "show"}, 100, "linear", function() { 
    console.log("Animation Complete"); 
}); 

方法2:使用CSS過渡用的setTimeout: 這是代碼的樣子:

$("div").addClass("hidden") //On Page load 

然後動畫淡入:

setTimeout(function() { 
    $("div").removeClass('hidden'); 
}, 100); 

隱藏有以下樣式屬性:

.hidden { opacity: 0 !important; } 

工作都相當好,但我想知道哪一個更有效的/更好。

+0

動畫方法可能更易於維護(所有代碼均位於同一位置),但在低功耗環境(移動/平板電腦)中,轉換可能會提供更好的性能。 –

+3

不要使用'!important'。讓你的選擇更強。 – gilly3

+0

不幸的是我不能自己添加答案,因爲這個問題已經關閉,但經過深入分析,動畫方法更好。爲什麼?那麼爲了真正理解這一點,我們需要記住Javascript在單線程上運行。當調用setTimeout時,即使在100 ms的時間內,它也會阻塞該線程,因爲每納秒的效率非常重要。動畫方法(通過檢查jquery源代碼)是通過使用「ticker」來實現的,ticker基本上是一個計數器,用於檢查激活時間與當前日期之間的差異。 –

回答

2

去轉換,除非JavaScript動畫爲你提供的東西,轉換沒有。

轉換在瀏覽器級別實現,在某些情況下是硬件加速的,所以它們通常應儘可能快。

而且,代碼要簡單得多。

0

Animate對此更好。 setTimeout()在一段時間後立即刪除css類,但animate逐漸淡入/淡出。

0

使用jQuery動畫將幫助你,如果你的淡出時間大於100ms更多..因爲它們在瀏覽器本地實現的,經常使用硬件加速