2016-11-07 3 views
-3

私のブラウザにはイベントストリームがあります。私はそれらをリストとしてアニメーション化したい - 新しいイベントが来たら、他のアイテムはスムーズに1つのアイテムを滑り落ち、新しいものはリストの一番上にフェードインする。javascript/cssでログストリームをアニメーション化するには

私はtransit.jsのような軽量のアニメーションエンジンを使用することを好むか、私はtranslateY: '1em'を試みたが、むしろダウン1行をすべての項目を移動するよりも、最初の時間を、それらを下に移動しているようだ

velocity.js、と思います連続して通話するとそこに保持されます。

のコード例

<ul id="container"> 
    <li>blah</li> 
    <li>yoyo</li> 
</ul> 

とJS

$("#container").children().velocity({ 
    translateY: "1em" 
}, 1000); 

$("#container").prepend("<li>yar</li>"); 

$("#container").children().velocity({ 
    translateY: "1em" 
}, 1000); 

$("#container").prepend("<li>yar</li>"); 

上codepen:http://codepen.io/ankopainting/pen/KNwYxJ

+1

新しい項目を追加し、 'slideDown()'を呼び出しますか?既存のコードを表示せずにお手伝いします。 –

+0

私の既存のコードは機能しません!私はどのようにそれを行うことができるかのテクニックを探しています。私は多くのことを試しました。そして、いいえ、アイテムを追加して、slideDown()を呼び出すことはできません。これは、スライドモーションの要素を表示し、それらをすべて翻訳したり、新しいものをフェードインさせたりすることはありません。 – Anko

+0

サンプルを追加していただきありがとうございます。参考までに、あなたが作業している文脈を見ることができるように、あなたの壊れたコードを見る必要があります。私は答えを加えました。 –

答えて

1

はあなたが新しい項目を付加し、このように、slideDown()を呼び出すことができます必要なものを達成するために:

$('button').click(function() { 
 
    $('<li>foo</li>').addClass('added-item').prependTo('#container').slideDown(); 
 
});
.added-item { 
 
    display: none; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<ul id="container"> 
 
    <li>blah</li> 
 
    <li>yoyo</li> 
 
</ul> 
 

 
<button>Add item</button>

+0

これは、アイテムをスライドさせて新しいエレメントにフェードインするのではなく、新しいエレメントをスライドさせるだけです。 – Anko

関連する問題