2011-06-27 6 views
0

私は、リスト要素が浮かれているとき、ulリスト要素の背景位置のアニメーションを作成するいくつかの実験的なスクリプトを持っています。 このタスクを管理する別の方法はありますか?またはこのコードを最適化するだけですか?基本的な最適化コードとしてこのjQueryコードを最適化する方法は?

http://jsfiddle.net/jurisKaste/nDgSE/

+0

最高の最適化。それはすべてのブラウザで動作しない場合は気になりますか? –

+8

より良い結果を得るには、ここに投稿することを検討してください:http://codereview.stackexchange.com/ –

+0

CSSアニメーションをチェックします...しかし、私はクロスブラウザの互換性を持っています:) – wolf3d

答えて

1
var c = 0, 
    ids; 

$(function(){ 
    $("li.animate").hover(function() { 
     ids = setInterval(function() { 
      $('.animate').css('backgroundPosition', ((++c==4) && (c=0), (-100 * c) + 'px 0')); 
     }, 40); 
     }, function() { 
      $('.animate').css('backgroundPosition', '0 0'); 
      clearInterval(ids); 
     } 
    ); 
}); 
+0

大オペレータ優先使用! – wolf3d

1
var c = 0; 
var ids; 
$(document).ready(function(){ 
    $("li.animate").hover(
    function() { 
     var param = '0 0'; 
     ids = setInterval(function() { 
     if (c > 4) { 
      c = 1; 
      param = '0 0'; 
     } 
     else { 
      param = (-100 * c++) + 'px 0'; 
      //alert(param); 
     } 

     $('.animate').css('backgroundPosition', param); 
     //$('#foo').fadeOut(); 
     }, 40); 
    }, 
    function() { 
     $('.animate').css('backgroundPosition', '0 0'); 
     clearInterval(ids); 
    } 
); 
}); 

、私は唯一の「css()」メソッドは最初の機能部に呼ばれているjQueryのステートメントを再配置できます。

希望します。

1

バックグラウンドをgifに変更します。あなたが得る最高のパフォーマンス。

+0

私は読む今日はcssスプライトについて、それらを使用したいと思っています(: – wolf3d

1

40ミリ秒のタイマー間隔を最適化する最良の方法は、高価なjQuery関数をその中にコールしないことです。 interval関数外の変数に$('.animate')への呼び出しを格納し、通常の配列のようにforでループし、標準のDOMプロパティを使用して各要素のスタイルを変更します。それがその要点です。コードの再編成を追加して、やり方を少し単純化しました。

var c = 0, ids; 
$(document).ready(function(){ 
    $("li.animate").hover(function() { 
    var ani = $('.animate'), l = ani.length; 

    ids = setInterval(function() { 
     var i, param; 
     if (c >= 5) { 
     c = 1; 
     param = '0 0'; 
     } else { 
     param = (-100 * c++) + 'px 0'; 
     } 

     for (i=0; i<l; i++) { 
     ani[i].style.backgroundPosition = param; 
     } 
    }, 40); 

    }, 
    function() { 
    $('.animate').css('backgroundPosition', '0 0'); 
    clearInterval(ids); 
    } 
);}); 

試してみよう:私はいくつかのブラウザでハードウェアアクセラレーションを使用するCSSアニメーションを、使用していると考えることができますhttp://jsfiddle.net/nDgSE/4/

+0

今、これらのアタッチメントをすべて1つにまとめようとします – wolf3d

関連する問題