2012-03-05 11 views
1

私はあなたの上に乗っているものを示すためにイメージのギャラリーにクールなフェイディホバー効果を行っています - しかし、20以上のイメージがあるとき、それは実際にパフォーマンスを殺します。ここで多くの要素のjQuery fadeTo()パフォーマンス

は(非常に基本的な)私はそれをやっている方法です

$('img').on('hover', function(){ 
    $(this).stop().fadeTo(100,1); 
    $('img').not($(this)).stop().fadeTo(100,.5); 
}); 

誰もがこのための最適化の良いビット、または最初の場所でそれを行うには良い方法がありますか?

「単にCSSを使用する」とは言わないでください。これは既にフォールバックとして存在しています。

+0

申し訳ありませんが、あなたは '使用しているCSS'は、グラフィックス機能で構築されたブラウザに戻ってきます。あなたはJS、JSを使用したいです!このポストのJSはあなたのグラフィックスカードを使わず、メモリ内の純粋な数学(限られたCPUスレッド)を使って、非常に速くなります。CSS3を使ってください!ユーザーがCSS3を持っていない場合、今すぐアップグレードするように教えてください! – ppumkin

+0

@ppumkin私があなたに同意するのと同じくらい、残念ながら私はユーザーのアップグレードを強制する立場にはいません(私は本当に好きですが)。さて、CSS3だけでこれを達成する方法は?答えに固執して、私がおそらく受け入れるだろう – jammypeach

答えて

2

すると、パフォーマンスが改善されるかどうかを確認するために、これを試してみてください:ここ

$('img').on('mouseenter', function(){  
    $(this).fadeTo(100, 0.5); 
}).on('mouseleave', function(){  
    $(this).stop(true).fadeTo(100, 1); 
}); 

jsFiddle:http://jsfiddle.net/26w5q/

が正常に動作するようです。

+0

aaaah、ofcourse :)あなたが1つの要素だけをアニメーション化しているのであって、それらのすべてをアニメーション化していないので、完璧な意味があります。今日の私の考えのキャップを持っていない...あなたは、インターネットに勝つ。 – jammypeach

+1

ハハ、あなたのjQueryエスケープの幸運を逃して、それは楽しいです! :) –

+0

IE6,7,8でメジャーな問題が起きることがあります:( – ppumkin

関連する問題