ローディングSVGロゴアニメーション|RevealFill実装ガイド


はじめに

SVGアニメーションは、Webデザインに動きを加えるための強力な手法です。今回は、SVGのパスを順番に塗りつぶす RevealFill アニメーションを実装する方法を紹介します。

このアニメーションでは、 Intersection Observer API を使用し、SVGが画面内に入ったときに順番に塗りが適用されるようにします。


RevealFillアニメーションとは?

RevealFillは、SVGの各パーツが順番に塗りつぶされるアニメーションです。この手法を使うことで、ロゴやアイコンをより魅力的に表示できます。

今回のアニメーションは、 SVG Artista を使って作成しました。


See the Pen Untitled by masakazuimai (@masakazuimai) on CodePen.


実装手順

1. SVGの準備

SVG Artista で作成したアニメーション付きの SVG を準備します。SVG には各パーツごとにクラスが付与され、fill のトランジションが適用されます。

<svg version="1.0" xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 1448 1447" preserveAspectRatio="xMidYMid meet">
  <g>
    <path class="svg-elem-1" d="M6995 14464 c-169 -7..."></path>
    <path class="svg-elem-2" d="M6910 12699 c-964 -59..."></path>
    <!-- 他のパス -->
  </g>
</svg>

このSVGの fill プロパティをアニメーションで適用するように設定します。

2. CSSの設定

CSSを使用して、SVGが .active クラスを持ったときに塗りが適用されるようにします。

svg .svg-elem-1, svg .svg-elem-2 {
  fill: transparent;
  transition: fill 0.7s cubic-bezier(0.47, 0, 0.745, 0.715) 0.8s;
}

svg.active .svg-elem-1 {
  fill: #000;
}

svg.active .svg-elem-2 {
  fill: #000;
}

3. JavaScriptで画面内に入ったら .active を追加

JavaScript で Intersection Observer API を使用し、SVGが画面内に入ったときに .active クラスを追加します。

document.addEventListener("DOMContentLoaded", function () {
  const svgElement = document.querySelector("svg");

  const observer = new IntersectionObserver((entries) => {
    entries.forEach((entry) => {
      if (entry.isIntersecting) {
        svgElement.classList.add("active");
        observer.unobserve(svgElement); // 監視を停止
      }
    });
  }, { threshold: 0.2 });

  if (svgElement) {
    observer.observe(svgElement);
  }
});

4. SVGを中央に配置し、幅を50%に設定

画面中央に配置し、幅を50%にするCSSを追加します。

svg {
  width: 50%;
  height: auto;
  display: block;
  margin: 0 auto;
}

まとめ

  • SVG Artista でアニメーション付きの SVG を作成
  • CSSfill のトランジションを設定
  • JavaScriptIntersection Observer を使って .active クラスを追加
  • CSSで中央配置 & 幅50% に調整

この方法を使えば、シンプルで視覚的に魅力的なSVGアニメーションを実装できます!

ぜひSVGアニメーションを試してみてください! 🚀