CSSでSVGをアニメーションする方法

例つき

HTMLにインラインで挿入したSVGは、他の要素と同様にCSSでアニメーションできます。よく使う手法を紹介します。

前提:インラインSVG

CSSが内部の図形に届くには、SVGがHTMLにインラインである必要があります(imgではない)。アニメーションしたい図形にクラスやIDを付けます。

1. 連続回転

.spin { transform-box: fill-box; transform-origin: center; animation: spin 2s linear infinite; } @keyframes spin { to { transform: rotate(360deg); } }

transform-box: fill-box で自身の中心を軸に回転します。

2. 線が描かれる効果

.line { stroke-dasharray: 300; stroke-dashoffset: 300; animation: draw 2s ease forwards; } @keyframes draw { to { stroke-dashoffset: 0; } }

「手描き」風の効果。値は実際の線の長さに合わせます。

3. ホバーで色変更

.icon path { fill: #6c8cff; transition: fill .2s; } .icon:hover path { fill: #ff6c9c; }

4. 拡大のパルス

@keyframes pulse { 50% { transform: scale(1.15); } } .dot { transform-box: fill-box; transform-origin: center; animation: pulse 1s ease-in-out infinite; }

コツ

SVGを準備

svgdeskで図形を作り、整理したコードの <svg> をコピーしてインラインで貼り、アニメーションします。

エディタを開く

続けて読む