私はゆっくりと存在に消え、コンテナ全体に距離を置いて浮かぶ一連の div を作成しようとしています。フローティング div (フローター) がコンテナーの外/画面外に出ると、それが生成された場所に再表示され、再びフェードインして、永遠にループします。
基本的なアニメーションを正常に作成できましたが、複数の div を生成し、コンテナーの端まで互いにフロート/フォローする効率的な方法がわかりません。
どうすればこれができるか知っている人はいますか?
単一の div アニメーションのこれまでの内容は次のとおりです。
function floaters()
{
$('.floater').each(function(){
$(this).animate({'opacity': '1'}, {queue: false, duration: 5000}) ;
$(this).animate({'left': '-=652'}, 2000, 'linear', function(){
$(this).css('left', '622px') ;
$(this).css('opacity', '0.0') ;
floaters() ;
}) ;
})
}
「それぞれ」を使用する必要があるかどうかはわかりません。
ここで私がこれまでに行ったことと、私が達成しようとしていることを見ることができます。
基本的に、一連のボックスが互いに続き、各ボックスがページの最後に到達したらループします。これは、この 1 つのボックスとまったく同じですが、それぞれの間にランダムな開始距離があります。
@ r0m4n私が望んでいたようなものですが、各ボックスを同じ場所で開始し、それらの間に遅延を設けて、各ボックス間のスペースが均等になり、一度に8つのボックスしか存在しないようにしたい. これを実現するためにスクリプトをどのように調整しますか?
私がやろうとしていることをよりよく説明することを期待して、スクリプトをやり直しました。アニメーションの特定のポイントで発生させたいイベントをより適切に制御できるようにするため、代わりに setInterval を使用しました。
var creationTimer ;
var moveTimer ;
function floaters()
{
var firstTime = 1 ;
moveTimer = setInterval(function(){
$('.floater').each(function(){
var pos = $(this).position() ;
$(this).css('left', (pos.left-2)+'px') ;
if(pos.left < -32 || firstTime == 1)
{
firstTime = 0 ;
$(this).css('left', '620px') ;
$(this).hide() ;
$(this).show(500);
}
if(pos.left < 500 && pos.left > 450)
{
clearTimeout(creationTimer) ;
creationTimer = setTimeout(function(){
$('#latest').append('<div class="floater"></div>') ;
}, 1000)
clearInterval(moveTimer);
}
})
}, 50)
}
clearInterval(moveTimer) が呼び出された時点で、新しい div が表示され、前のボックスに続くようにします。そのサイクルをX回繰り返したいです。これを十分に説明できていることを願っています。これまでお世話になりました。
誰でも助けることができますか?