2017-10-05 8 views
0

私は各文をスライドアップさせようとしていますが、別の時にスライドしています。今、それらはすべて同時にスライドします。私は最初の文章が上にスライドし、その後0.1sの後に2番目の文が上にスライドするようにします。ここに私のjavascriptがあります。私はjavascriptのみでこれをやろうとしており、追加のCSSはありません。異なる時間にY軸上でdivを移動する

<div class="container"> 

    <div class="sentences">The first sentence</div> 

    <div class="sentences">The second sentence</div> 

    <div class="sentences">The third sentence</div> 

</div> 



function moveSentences() { 

    $('.sentences').css('transform', 'matrix(1, 0, 0, 1, 0, -20)'); 

} 

moveSentences(); 

これまで私がこれまで持っていたことの真実があります。 Fiddle

+0

あなたはCSS3の遷移遅延特性を使用してみましたか? https://www.w3schools.com/cssref/css3_pr_transition-delay.asp – Bhumika107

+0

にはそれぞれ異なる遅延を与えることができます。 1つは、すべての "sentences"要素に一度に変換を適用することです。 2つはあなたが「文章」クラスに遅延属性がないことです。 「transition-timing-function:ease-in」を適用してみてください。それに。 – Nuspeed1

答えて

1

あなたはjQueryのを使用しているので、あなたは遅れを持つ要素と仕事をループすることができます

$('.sentences').each(function(i, item) { 
    $(this) 
     .delay(100 * i) 
     .queue(function() { 
      $(this).css('transform', 'matrix(1, 0, 0, 1, 0, -20)').dequeue(); 
     }); 
}); 
+0

アニメーションを5秒ごとに再生するにはどうすればよいですか? 5秒ごとに関数を実行し、アニメーションをループします。私はsetinterval(moveSentences、5000)を追加しました。私のコードにはまだ1回しか再生されません。 – brewpixels

+0

cssプロパティ 'transform'を設定するのではなく、' jQuery.animate'を使って毎回何かyを減らすことができます。それはあなたの元の目標ですか? – spaark

+0

はい、divsをy軸上で動かし続けたいから – brewpixels

0
var i = 0; 
    var length = $('.sentences').length; 
    var x = -20; 
    function moveSentences() { 
     alert('hi'); 
     $('.sentences').eq(i).css('transform', 'matrix(1, 0, 0, 1, 0,' + x + ')') 
     x = x - 20; 
     i++; 
    } 

    var intrval= setInterval(function() { 

      moveSentences() 
      if (i >= length) { 
       clearInterval(intrval); 
      } 
     }, 1000) 
関連する問題