2020.10.05

svg

svgロードアニメーションをSMILで実装【グラデーションの線を回転】

デモページはこちら

グラデーションの線を回転する動作のsvgロードアニメーションを、XMLベースの言語SMILで実装します。画像読み込みの管理ができるJavaScriptライブラリ、imagesLoaded(imagesloaded.pkgd.js)を利用しています。

svgタグで表示エリアをwidth="60"、height="60"で設定します。線が回転するエリアになります。描画エリアはviewBox="0 0 38 38"(X座標:0、Y座標:0、width:38px、height:38px)で設定します。円の4分の1+余白を描画したエリアです。

グラデーションはdefs内にlinearGradientで設定し、id="a"を指定しておきます。pathのstrokeでurl(#a)のようにlinearGradientのidを指定すると線にグラデーションが適用されます。

グラデーションの線を回転する動作はSMILで記述しています。ただしSMILはIEでは動作しません。
animateTransformはトランスフォーム属性のアニメーションになります。

attributeName="transform" //アニメーションを行う属性名
type="rotate" //回転のアニメーションを指定
from="0 18 18" //0度から360度までの回転、X座標とY座標は固定
to="360 18 18" //0度から360度までの回転、X座標とY座標は固定
dur=".6s" //アニメーションを行う時間
repeatCount="indefinite" //永久にアニメーションを繰り返し

<svg class="p-loader-circle" xmlns="http://www.w3.org/2000/svg" width="60" height="60" viewBox="0 0 38 38">
	<defs>
		<linearGradient x1="8.042%" y1="0%" x2="65.682%" y2="23.865%" id="a">
			<stop stop-color="#000000" stop-opacity="0" offset="0%"/>
			<stop stop-color="#000000" stop-opacity=".631" offset="63.146%"/>
			<stop stop-color="#000000" offset="100%"/>
		</linearGradient>
	</defs>
	<g transform="translate(1 1)">
		<path d="M36 18c0-9.94-8.06-18-18-18" stroke="url(#a)" stroke-width="2" fill="none" fill-rule="evenodd">
			<animateTransform
			attributeName="transform"
			type="rotate"
			from="0 18 18"
			to="360 18 18"
			dur=".6s"
			repeatCount="indefinite" />
		</path>
	</g>
</svg>

関連記事

2020.09.09

svg

svgロードアニメーションの実装【円を一周】

デモページはこちら 円を一周する動作のsvgロードアニメーションを実装します。画像読み込みの管理ができるJavaScriptライブラリ、imagesLoaded…

2024.09.15

svg

svgのclipPathを利用した画像の切り抜き

svgのclipPathを利用して画像を切り抜きます。svgの書き方は数パターンあります。デモページはこちら まず同一のsvg内にclipPathを記述し、us…

2021.10.06

svg

svgコード記述時の注意点

svgコード記述時の注意点をまとめます。 ■ svgコードの最適化にツールを利用 SVGの不要なコードを取り除いて最適化してくれるツールとして、ブラウザで利用で…

2020.10.21

svg

svgロードアニメーションをCSSアニメーションで実装【グラデーションの線を回転】

デモページはこちら グラデーションの線を回転する動作のsvgロードアニメーションを、CSSアニメーションで実装します。 svgタグで表示エリアをwidth="6…

上に戻る