ブログに戻る

CSS Motion PathとSVGアニメーション実践ガイド

CSS Motion PathをSVG path、offset-path、offset-distance、レスポンシブ対応、アクセシビリティ、SVGViewワークフローで実践します。

2026年7月27日CSS Motion PathSVGアニメーションoffset-pathSVGフロントエンドアクセシビリティSVGView

CSS Motion PathとSVGアニメーション

CSS Motion Pathは、要素を直線ではなく指定した形に沿って動かすCSS機能です。SVGの曲線、地図ルート、プロダクトイラストの線を、そのままブラウザ上の動きに使いやすくなります。

要点

  • offset-pathで軌道を定義します。
  • offset-distanceで軌道上の進行位置を制御します。
  • SVGのpathデータはCSS path()に利用できます。
  • レスポンシブでは軌道と見た目のずれを確認します。
  • prefers-reduced-motionを必ず考慮します。

基本例

.marker {
  offset-path: path("M20 120 C120 20 220 220 340 80");
  animation: travel 4s linear infinite;
}

@keyframes travel {
  to {
    offset-distance: 100%;
  }
}

path()の値はSVG path構文です。そのため、既存のSVGルートをUIアニメーションの軌道として再利用できます。

使いやすい場面

プロダクトツアー、地図の移動ルート、グラフ上のマーカー、曲線を進むアイコン、進捗表現に向いています。まずSVG Path Extractorでルートを取り出し、SVG Viewerで確認し、SVG Optimizerで整理します。

HTMLとCSS

<svg viewBox="0 0 360 160" aria-hidden="true">
  <path d="M20 120 C120 20 220 220 340 80" fill="none" stroke="currentColor" />
</svg>

<span class="dot" aria-label="Upload progress"></span>
.dot {
  width: 16px;
  height: 16px;
  border-radius: 999px;
  background: #14b8a6;
  offset-path: path("M20 120 C120 20 220 220 340 80");
  offset-distance: 0%;
  offset-rotate: auto;
  animation: move-dot 3200ms ease-in-out infinite;
}

@keyframes move-dot {
  to {
    offset-distance: 100%;
  }
}

offset-rotate: autoは進行方向に合わせて要素を回転します。矢印には便利ですが、テキストラベルには向きません。

レスポンシブとアクセシビリティ

CSS path()はSVG viewBoxのように自動拡大縮小されません。アニメーション領域を安定させ、元デザインと同じ座標を使い、複数の画面幅で確認しましょう。

@media (prefers-reduced-motion: reduce) {
  .dot {
    animation: none;
    offset-distance: 100%;
  }
}

動きは理解を助けるためのものです。本文、ボタン、入力欄を覆わず、状態を動きだけで伝えないようにします。

SVGViewワークフロー

  1. SVG ViewerでSVGを開き、viewBoxを確認します。
  2. SVG Path Extractorで軌道を抽出します。
  3. 外部SVGはSVG Sanitizerで安全にします。
  4. SVG Formatterでレビューしやすくします。
  5. SVG Optimizerで最適化し、再テストします。

まとめ

CSS Motion PathはSVGパスを保守しやすいUIモーションに変える方法です。まず単純な軌道から始め、目的のある動きに絞り、公開前にアクセシビリティを確認しましょう。

関連記事

SVG ワークフローと制作のヒントを引き続き探索してください。