アニメーションのライブラリ anime.js が v3.0 にアップデートされたので、デモの一つ Staggering animations を使って動作を試してみました。
anime.jsの準備
github にある anime.js のファイルをダウンロードして配置することで環境が整います。
下記コードのような感じで、anime.jsを読み込みます。
<script src="anime.min.js"></script>
Staggering animations
stagger なので、少しずつタイミングをずらしながらアニメーションする、という事だと思います。
1. デモの動作
最初にデモの動作を確認します。
2. 色をつけてみる
Staggering animations の動作に合わせて色を変化させてみます。
Staggering animations の JavaScript に記述を加えます。
.add({ targets: '.stagger-visualizer .dot', //全てのドットを対象とする keyframes: [ { background: 'linear-gradient(white, lightgray)', //デフォルトの色 delay: anime.stagger(100,{grid: [20, 10], from: index}), duration: 0 }, { background: 'linear-gradient(blue, deeppink)', //変化後の色 duration: 2250 }, { background: 'linear-gradient(white, lightgray)', //元の色に戻す duration: 300 } ] }, 0)
ディレイの部分に anime.stagger を使用しています。
最初の数字 100 はディレイの間隔で、値を大きくすると間隔が広くなって、小さくすると狭くなります。
grid の数字はドットの数です。(横20, 縦10)
from には起点となる場所を設定します。
デモの場合では 0 ~ 199 までの範囲でランダムな数が入る変数 index を使用しているので、ランダムに選ばれたポイントが起点となります。
var index = anime.random(0, numberOfElements-1);
2.1 色をつけたサンプル
1.のデモに色を追加すると、下図のようになります。
2.2 行ごとに色を変えた場合のサンプル
ランダムに選ばれる index の値で条件を分岐させると下図のようになります。
3. 中心を起点としてみる
from に ‘center’ を設定することで、起点がグリッドの中心に固定されます。
delay: anime.stagger(100,{grid: [20, 10], from: 'center'})
3.1 中心を起点としたサンプル
色が変化する起点がグリッドの中心に固定されました。
4. ディレイを放射状からX軸に変えてみる
axis を使うことで、放射状になっていたディレイを X 軸、または Y 軸に変更することができます。
delay: anime.stagger(80,{grid: [20, 10], from: 0, axis: 'x'})
4.1 X軸に変えた場合のサンプル
from を 0 としたので常に左端から、axis を ‘x’ としたので横方向に展開していきます。