SVGについてまとめは
今回はSVGアニメーションの実装をやってみたいと思います。
SVG画像をアニメーション用に変換する
前回作成したSVG画像のHTMLコードが以下になります。
今回注目していただきたいのが「path」「polygon」タグです。
サンプル画像では、以下のような状態になっています。
ここでポイントなのがSVGアニメーションをさせることができるのは「path」のみです。
そのため、「polygon」タグを「path」に変換する必要があります。
plygonタグをpathタグに変換する
polygonタグ
変換した箇所
- polygon → path
- points= → d=
- d=“の先頭にMをつける。最後にZをつける。
pathタグに変換後
これでSVG画像をアニメーション用に変換できました。
次に、アニメーションをさせるプラグインをインストールします。
【jQuery DrawSVG】のインストール
SVGアニメーション用のプラグインに今回は【jQuery DrawSVG】を使用してみます。
jQuery DrawSVGを使用する時はjQueryも読み込ませましょう。
SVGアニメーションを実装する
アニメーションを指定するため、svgタグにidをつけます。
jsファイルに以下のコードを書きます。
これでSVGをアニメーションすることができました。次に【jQuery DrawSVG】のオプションをみていきます。
オプション | タイプ | デフォルト | 説明 |
---|
duration | Integer | 1000 | 各パスのアニメーション時間 |
stagger | Integer | 200 | 各パスのアニメーションスタートまでの時間 |
easing | String | swing | イージング |
reverse | Boolean | false | パスの描画する方向 |
callback | Function | function() | アニメーション完了後に呼び出す関数 |
SVGアニメーションのデモ
【jQuery DrawSVG】の注意点
SVGを【jQuery DrawSVG】を使用してアニメーションさせた場合、パスの最初と最後の接続箇所が反映されません。(chrome,safari,firefox)SVGでは線の端と線の接続箇所のスタイルを指定するプロパティがあります。
今回のサンプルではペンの先端を最初と最後の接続箇所にしていたため、
stroke-linejoin: miter;が適用されずstroke-linecap: butt;が適用されて角が潰れてしまいました。
SVG画像をアニメーションさせる際はパスの最初と最後の場所を気を付ける必要がありますね。
IE11、Edgeで複数のパスがあると上手く描画されない
IE11、Edgeで検証すると複数のパスがある時に複雑なパスが上手く描画されません。こちらは現在検証中です。
関連リンク