SVGアニメーションを簡単に実装できるSnap.svgの使い方
そもそもSnap.svgとは?
Snap.svgはSVGにアニメーションを付けることができるJavaScriptのライブラリです。
ベクター画像のパスを指定し動きを付けることで、CSSのみだと難しい複雑なアニメーションを実現することができます。
Snap.svgでアニメーションを実装する方法
今回は上のような、振り回されてるハンマーを作ってみます。
※ gif画像のため、多少カクついて見えるかもしれません。
1. jsファイルを読み込む
まず公式サイトからjsファイルをダウンロードします。
zipを解凍後、Snap.svg > dist > snap.svg-min.js
を任意のディレクトリに設置します。
あとはhead
タグ内でそれを読み込みます。
2. SVG画像を用意する
まず動かしたいSVG画像を用意します。
3. 動かしたいパスにクラスを指定
今回の場合は全てのパスを動かしたいのでそれぞれにidを割り当てます。
4. 変形後のパスを用意する
変形後(アニメーション終了時)のタグを用意します。
そのタグから座標を抜き取ります。例だとこの部分ですね。
5. animateメソッドで動かす
まずSnap
クラスのインスタンスを作成し、動かしたいタグそれぞれのidを指定します。
第2引数ではアニメーションの速度(ミリ秒)を、第3引数ではイージングを指定。
そしてそのインスタンスそれぞれで、先ほど抜き取ったパスを引数としてanimate
メソッドを呼びます。
色々ツッコミどころのある動きですが、これで簡単な2点間のアニメーションは実装できました。
今回のアニメーションは3点間を行き来することによってハンマーを振り回してるように見せるものなので、3つのパスを行ったり来たり&繰り返す必要があります。
6. アニメーションを繰り返す
上記ようにアニメーションが終了後に実行されるコールバック関数を引数で指定できるので、これを利用して3点間のアニメーションを繰り返します。
上記のようにdirection
でアニメーションの方向を保存し、アニメーションを繰り返します。
7. 速度などを調整
ハンマーが振り回されているように見せるため、2つ目のパスの透明度を下げて残像のようにします。
その他アニメーションのタイミングや速度などを変更すれば完成です 🎉