jQueryキューを使用してフェードインをキューに入れることができます。そのようです:
jsFiddleでライブをご覧ください。
//--- Queue-up the fade-in's
var animationQ = $({});
$("#navtop a").each ( function () {
var jThis = $(this);
animationQ.queue ('FadeIns', function (nextQ_Item) {
jThis.fadeIn (5000, function() {
nextQ_Item ();
} );
} );
} );
//--- Start the fade-ins.
animationQ.dequeue ('FadeIns');
このアプローチには、セレクターを変更するだけで、ノードの任意のコレクションをキューに入れることができるという利点があります。彼らは兄弟である必要はありません。
更新:
フェードインの開始を途中でずらすには、次を使用します。
var fadeTime = 5000; //-- How long will an individual fade last? (mS)
var fadeStagger = 500; /*-- How far into i=one element's fade will
the next elements fade start? (mS)
*/
//--- Queue-up the fade-in's
var animationQ = $({});
$("#navtop a").each ( function (J) {
var jThis = $(this);
animationQ.queue ('FadeIns', function (nextQ_Item) {
jThis.fadeTo (fadeStagger, fadeStagger / fadeTime , function() {
nextQ_Item ();
jThis.fadeTo (fadeTime - fadeStagger, 1);
} );
} );
} );
//--- Start the fade-ins.
animationQ.dequeue ('FadeIns');
jsFiddleでご覧ください。
要求された説明:
空のオブジェクト()でjQueryを実行して、汎用キューコンテナを設定します$({})
。これは、キューをノードに接続するよりもクリーンなようです。
有効なjQueryセレクターを使用してノードを選択し、each()
関数Docを使用してノードをループします。
ノードごとに、queue()
関数Docを使用して、カスタムキューにエントリを追加します。
- 競合を避けるために、キューに「FadeIns」という一意の名前を付けます。
- 各キューエントリは、呼び出されたときに次のキューエントリへのポインタを渡します。
nextQ_Item
それを変数でキャプチャします。
- キューアイテム、関数には2つのジョブがあります。(1)アイテムのフェードを実行し、(2)完了したら次のキューエントリを呼び出します。
- ただし、目的のスタッガードスタートを実現するために
、フェードドキュメントを2つの部分に分割しました。
- 最初のフェードは
fadeStagger
遅延時間の間だけ続きます。全体の時間に対する遅延時間の比率によって終了不透明度を計算します。
- 次に、次の要素をトリガーします。
- 次に、フェードを再開して完了します。残りのミリ秒は(total --stagger-delay)だけであることを思い出してください。
- カスタムキューが作成されたら、
dequeue()
関数Docを使用してキューを起動します。