SVGタグを使ったアニメション

SVGタグの使い方がいまいち分からないと思っていませんか?

なんとなくは使えているけれど、本質的な部分は理解していないままなんてこともありますよね…

そこで今回は、以下の内容を分かりやすく説明します。

  • SVGタグを使ったアニメーション
  • 様々なパターンを用いてアニメーションを実装

この記事を書いた人
yuki

2023年からWeb制作会社でコーダーとして活動。
HTML, CSS, JavaScript, Shopify対応可能。

もくじ

はじめに

今回紹介するコードはこちらです!

<svg class="svg-circle" viewBox="0 0 40 40">
  <circle cx="20" cy="20" r="19">
</svg>
.svg-circle {
  width: 250px;
}

circle {
  fill: #fff;
  stroke: #060547;
  stroke-width: 1;
}

/* animation
------------------------------------------------------*/
.svg-circle circle {
  animation: circle 3s forwards;
}

@keyframes circle {
  0% { stroke-dasharray: 0 126;}
  99.9%, to { stroke-dasharray: 126 126;}
}

svgタグアニメーションの実装方法

今回実装するアニメーションの流れです。

  1. HTMLのSVGタグで形を作成
  2. CSSのkeyframesでアニメーションを実装

1. HTMLのSVGタグで形を形成

<svg class="svg-circle" viewBox="0 0 40 40">
  <circle cx="20" cy="20" r="19">
</svg>
.svg-circle {
  width: 250px;
}

circle {
  fill: #fff;
  stroke: #060547;
  stroke-width: 1;
}

SVGのcircle要素で円を描きます。

fillは、塗り
strokeは、線
stroke-widthは、線の太さ

2. CSSのkeyframesでアニメーションを実装

/* animation
------------------------------------------------------*/
.svg-circle circle {
  animation: circle 3s forwards;
}

@keyframes circle {
  0% { stroke-dasharray: 0 126;}
  99.9%, to { stroke-dasharray: 126 126;}
}

@keyframesを使って、円の線をアニメーションさせます。

様々なパターン

<svg class="svg-circle" viewBox="0 0 40 40">
  <circle cx="20" cy="20" r="19">
</svg>

開始位置:上(-90deg)

.svg-circle {
    width: rem(250);
    transform: rotate(-90deg);
}

開始位置:下(90deg)

.svg-circle {
    width: rem(250);
    transform: rotate(90deg);
}

開始位置:左(-180, 180deg)

.svg-circle {
    width: rem(250);
    transform: rotate(180deg);
}

開始位置:右斜め

.svg-circle {
    width: rem(250);
    transform: rotate(-15deg);
}

まとめ

SVGタグをアニメーションさせる場合はCSSの@keyframesを使うと便利です。

アニメーションの開始位置もCSSで簡単に変更できるので、色々試してみるとアニメーションの幅が広がります!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
もくじ