utils.toArray( )は、GSAPのメソッドのうちのひとつで、例えば複数の要素に同じアニメーションをつけたり、複数の要素に順番にアニメーションを適用したい時や、遅延を追加したいときなどに使うと便利です。
この記事ではutils.toArray( )
の使い方と、このメソッドを使ったアニメーション例について説明していきます。
utils.toArray( )の使い方
utils.toArrayメソッドとは
utils.toArray
メソッドは、特定の要素を配列として取得することができます。
例えば、以下のようにクラス名を指定して記述すると、「.js-move」のクラス名を持つ要素が配列として取得され、配列メソッドである.forEach( )
を利用して、取得したそれぞれの要素に対してアニメーション処理が行われます。
gsap.utils.toArray('.js-move').forEach(element => {
gsap.fromTo(element,
{ x: -200, opacity: 0 },
{
x: 0, opacity: 1,
duration: 1,
scrollTrigger: {
trigger: element,
start: "top 80%",
toggleActions: "play none none none"
}
}
);
});
utils.toArray
メソッドのポイントは、配列として取得されることです。
配列として取得されることで、その後の java script の配列メソッドの使用が簡単になります。
querySelectorAll() メソッドとの違い
utils.toArray
( )は、GSAPのメソッドですが、以下のように java scriptのquerySelectorAll()
メソッドを使っても同じ処理になります。
document.querySelectorAll('.js-move').forEach(element => {
gsap.fromTo(element,
{ x: -200, opacity: 0 },
{
x: 0, opacity: 1,
duration: 1,
scrollTrigger: {
trigger: element,
start: "top 80%",
toggleActions: "play none none none"
}
}
);
});
何が異なるのかというと、utils.toArray()
が要素を配列として取得するのに対し、querySelectorAll()
は要素をNodeListとして取得することです。
utils.toArray
( )が要素を配列として取得しているので、全ての配列メソッドを使用することができますが、querySelectorAll()
は要素をNodeListとして取得しているので、一部の配列メソッドしか使用することができません。
querySelectorAll()
の場合、処理の内容によっては、取得したNodeListを配列に変換する必要が出てきます。forEach()
の場合は、NodeListに対しても使えるため配列に変換する必要はなく、上記のように記述すればOKということになります。
utils.toArray()を使用したアニメーション例
複数の要素に同じアニメーションを追加する
See the Pen Untitled by Michi (@Michi_) on CodePen.
このように、同一のクラス名をつけるだけで簡単に指定した要素をすべて取得、同じアニメーションを適用することができます。
異なるスクロール位置で要素を表示する
See the Pen ScrollTrigger_02 by Michi (@Michi_) on CodePen.
ScrollTriggerプラグインと同時に使用します。
先ほどの例では、取得した要素に全て同じタイミングで同じアニメーションが適用されましたが、こちらの例では、取得した要素それぞれにトリガー位置が設定されるので、各要素が画面に表示される時にアニメーションが適用されるようになります。
順番にアニメーションを適用する際に遅延を追加する
See the Pen Untitled by Michi (@Michi_) on CodePen.
utils.toArray()
では配列として要素が取得されるので、java scriptのindexを利用したアニメーションを作成することができます。
まとめ
この記事ではutils.toArray()
メソッドについて説明しました。
utils.toArray()
メソッドを使うと、複数の要素を簡単に一括で操作することができ、配列メソッドなどと組み合わせて様々なアニメーションを簡単に制御できるようになります。
表現できるアニメーションの幅が広がるので、ぜひ使ってみてください。
コメント