ここで大きなコウモリを振って現代に行く-個人的なプロジェクトでのみ。要素はページに読み込まれ、CSS3トランジションopacity:0
を持つクラスが追加されます。opacity:1
各要素を次々にフェードインするようにキューに入れようとしています。
通常、以下のコードを使用してフェードインをキューに入れることができますが、これはjQueryの.animate()
方法を使用するため、より高いフレームレートとより少ないCPU負荷が必要です。
$('.test').each(function(i) {
$(this).delay(i*100).animate({ opacity:1 }, 400); //CPU based!
});
クラスの追加は(私たち人間にとって)瞬時に行われるため、効果はそれほど効果的ではありません。
$('.test').each(function(i) {
$(this).delay(i*100).addClass('show'); //instant coffee!
});
目標は、クラスが追加された後にタイムアウトを設定して、元のアニメーションと実質的に同じ時間がかかるようにすることです。そしてここに私の問題があります:メソッドsetTimeout()
はウィンドウでのみ実行できます...
$('.test').each(function(i) {
$(this).delay(i*100).setTimeout(function(){ //doesn't work!
$(this).addClass('show');
}, 400);
});
addClass()
各要素の機能を遅らせ、メソッドにハングタイムを与えるにはどうすればよいですか?
$('.test').each(function(i) {
var test = $(this);
test.delay(i*100,function(){ //I wish!
setTimeout(function(){
test.addClass('show');
},400);
});
});