マコブログ|ゲームブログ

「ゲーム × プログラミング」で生きていく

【イラレ不要】SVGアニメーションを簡単に作る方法【jQuery】

JavaScript

「文字をアニメーションで表示させたい」「アニメーションでリッチに文字を演出したい」

こんな時に活躍するのがSVGアニメーションで、下記のアニメーションもSVG画像を使ってロゴタイトルを動的に演出しています、リロードすれば何度でも見る事が可能です(注意:Chrome等のモダンブラウザ推奨)

SVG画像を使用しているので、どれだけ拡大しても画像が荒くなる事はありません、どの解像度でも鮮明に表示されるのはSVG画像の魅力の一つです、今回はこういったSVG画像を使ったアニメーションの実装手順について解説してみたいと思います。

それでは、早速作ってみましょう。

SVGアニメーションの作成方法

今この時点で必要なものは「SVG画像」のみ、SVG画像が手元にない方は用意してきてください、「イラストレーターが無いからSVG画像作れません」って方は「Illustratorを使わずSVG画像を作成する方法」を参考に作ればOKです。

SVG画像さえ用意すれば3ステップでSVGアニメーションを実装できます、以下の通り。

  1. プラグインを用意する
  2. SVG画像をもとにコードを生成する
  3. コードを軽く編集する

それぞれ解説します。

①:プラグインを用意する

アニメーションにはjQueryのプラグインを使用します。GitHubから「jquery.lazylinepainter-1.7.0.min.js」(無ければ最新のやつ)をダウンロードしてきてください。

GitHub初心者の方は、リンク先のサイト右側にある緑色のダウンロードボタンからZipファイルでローカルに保存すればOKです、保存したデータの中にアニメーションを実装する為のJavaScriptファイルが入っています。

②:SVG画像をもとにコードを生成する

次に、「Lazy Line Painter」というサイトにアクセスし、そこでアニメーションコードを生成します。

LazyLinePainterの使い方

  1. サイト最下部付近にある「SVG TO LAZY LINE CONVERTER」をクリック
  2. 用意したSVG画像を選択しアップロード
  3. すぐ下にコードが生成されるのでそれをコピー

コピーしたコードはこの後使用します。

ステップ3:コードを軽く編集する

あとはマークアップで編集するだけです。

以下のようにしましょう。

index.html

<div id="macoblog"></div>
<script src="jquery.lazylinepainter-1.7.0.min.js"></script>
<script>
// ここにジェネレーターで生成したコードを貼り付ける
</script>

それぞれ簡単に解説します。

  • 1行目:ここにSVGを表示させます、IDはわかりやすければなんでもOK
  • 2行目:ダウンロードしたjQueryプラグインを読み込みます、もちろんhead内で読み込んでもOK
  • 4行目:先ほどジェネレーターで生成したコードをコピペ

これだけではまだ動きません。

var pathObj = {
    "macoblog": {
        "strokepath": [
            {
                "path": "M1.132 1.296v21.166",
                "duration": 600
            },
            {
                "path": "M22.299 1.296v21.166",
                "duration": 600
            },
            {
                "path": "M1.132 1.296l10.584 10.583",
                "duration": 600
            },
            {
                "path": "M22.299 1.296L11.716 11.879",
                "duration": 600
            },
            {
                "path": "M27.59 22.462L38.175 1.296l10.583 21.166",
                "duration": 600
            },
            {
                "path": "M32.882 17.17h10.584",
                "duration": 600
            },
            {
                "path": "M75.216 1.296H54.049v21.166h21.167",
                "duration": 600
            },
            {
                "path": "M101.674 1.296H80.507v21.166h21.167z",
                "duration": 600
            },
            {
                "path": "M106.966 22.462V1.296h21.166v10.583",
                "duration": 600
            },
            {
                "path": "M106.966 11.88h21.166v10.582h-21.166",
                "duration": 600
            },
            {
                "path": "M133.424 1.296v21.166h21.167",
                "duration": 600
            },
            {
                "path": "M181.049 1.296h-21.167v21.166h21.167V1.296",
                "duration": 600
            },
            {
                "path": "M207.507 1.296h-21.166v21.166h21.166",
                "duration": 600
            },
            {
                "path": "M196.924 11.88h10.583v10.582",
                "duration": 600
            }
        ],
        "dimensions": {
            "width": 209,
            "height": 24
        }
    }
};
$(document).ready(function(){
  $('#undefined').lazylinepainter({
    "svgData": pathObj,
    "strokeWidth": 2,
    "strokeColor": "#2581c4"
  }).lazylinepainter('paint');
});

68行目の#undefinedとなっている部分を、先ほどdivに指定したIDに紐づける必要があります、前述したコードを参考にすると、#macoblogと言った感じ。

おそらく、これでアニメーションが動くと思います。

以上!

チャンネル登録はこちら

うぇぶとまとのYouTubeチャンネル
うぇぶとまとうぇぶとまと

YouTubeチャンネルでは日々の暮らしをVlog形式で発信しています!ブログよりブログらしい内容になっていますので是非見てみて下さい!