RECRUIT急募!採用エントリー
SVGをコードとして扱うと広がる表現。線が描かれるアニメーションの実装例

スタッフブログ

Staff Blog
  1. ホームページ制作はアウラ:ホーム
  2. スタッフブログ
  3. SVGをコードとして扱うと広がる表現。線が描かれるアニメーションの実装例

SVGをコードとして扱うと広がる表現。線が描かれるアニメーションの実装例

SVGをコードとして扱うと広がる表現。線が描かれるアニメーションの実装例

こんにちは。エンジニアの村上です。

普段の制作の中で SVG を使うことがよくありますが、
アイコンやロゴを「画像として読み込む」だけでなく、
SVG をコードとして扱うことで、より自由な表現ができる ところがとても便利だと感じています。

パスを直接編集したり、CSS でスタイルを当てたり、
アニメーションを加えたりと、表現の幅が一気に広がるのが SVG の面白いところなので、
今回はそのSVGコードの一部活用法についてご紹介いたします。

SVGをコードとして使うための基本

SVG は画像として <img> タグで読み込むだけでなく、
中身のコードを直接HTMLに書いて使うことができます。

そのためには、まず 元となるSVGデータを “コード化” する必要があります。

ではまず上の3本のパスで作られた波線のSVGをコード化します。

最もシンプルなSVGをコード化する方法は、SVGファイルをテキストエディタで開いてみることです。

エディタをひらいてみると。。。

<svg width="800" height="160" viewBox="0 0 800 160" fill="none">
  <path  d="M 0 40 C 150 10, 300 70, 450 40 S 750 10, 800 40"/>
  <path  d="M 0 80 C 200 40, 350 120, 500 80 S 700 40, 800 80"/>
  <path  d="M 0 120 C 180 70, 330 150, 500 120 S 720 70, 800 120"/>
</svg>

上のようなコードで表示されます。

このように、SVG をコードとして扱えるようになれば、
パスの形をそのまま編集したり、アニメーションを加えたりできます。

線が描かれるように見えるSVGパスのアニメーション

実際に簡単にアニメーションをつけてみましょう。

<svg class="wave" width="800" height="160" viewBox="0 0 800 160" fill="none">
  <path class="wave-line1" pathLength="1" d="M 0 40 C 150 10, 300 70, 450 40 S 750 10, 800 40"/>
  <path class="wave-line2" pathLength="1" d="M 0 80 C 200 40, 350 120, 500 80 S 700 40, 800 80"/>
  <path class="wave-line3" pathLength="1" d="M 0 120 C 180 70, 330 150, 500 120 S 720 70, 800 120"/>
</svg>

まず上のようにクラス名をつけ、pathLength=”1″ を使ってすべてのパスを「長さ=1」として扱います。

そしてその次に、CSS を使って “線が描かれていくように見える” アニメーションを設定します。

  1. pathLength="1" を指定して、どんなパスでも「長さ=1」として扱う

  2. stroke-dasharray: 1 で、線全体を 1 つの大きな点線として設定する

  3. stroke-dashoffset: 1 で、その線を完全に隠した状態にする

  4. アニメーションで stroke-dashoffset: 1 → 0 に向けて動かし、線が描かれるように見せる

  5. 2本目・3本目は animation-delay で時間差を付けるだけ

この 5 つだけで、自然に線が描かれていくアニメーションが完成します。

  .wave path {
    stroke: #222;
    stroke-width: 3;
    fill: none;

    stroke-dasharray: 1;
    stroke-dashoffset: 1;

    opacity: 0;
  }
  .wave-line1 {
    animation: draw 2s ease-out forwards;
  }
  .wave-line2 {
    animation: draw 2s ease-out 0.5s forwards;
  }
  .wave-line3 {
    animation: draw 2s ease-out 1s forwards;
  }
  @keyframes draw {
    0%   { stroke-dashoffset: 1; opacity: 0; }
    1%   { opacity: 1; }
    100% { stroke-dashoffset: 0; opacity: 1; }
  }

これらの設定をすることで、

CSSだけで綺麗に波線が描かれるアニメーションを実現できます。

さいごに

今回は、SVG をコードとして扱うことでできる表現の中から、
“線が描かれていくアニメーション” をご紹介しましたが、
これはあくまで活用方法の一部です。

線だけでなく 文字の形をした SVG を用意すれば、
手書きで文字を書いているようなアニメーションも実装できますし、
その他にも工夫次第で表現の幅は大きく広がります。

アウラでは、こうした SVG の活用した多彩なアニメーション演出や、
サイト全体のデザイン・実装のお手伝いも可能です。
「こんな表現はできる?」「もっと動きのあるサイトにしたい」
といったご相談があれば、ぜひ一度お気軽にご連絡ください。

お電話でのお問い合わせはこちら:06-6292-8577。受付時間は平日9:30~18:30 インターネットからは24時間受付中!お問い合わせフォームはこちら
RECRUIT急募!採用エントリー