SVGアニメーション – Web Animations API を使う – Element.animate()メソッドの options – easing の steps(count, start|end) について

javascript

SVGアニメーション – Web Animations API を使う – Element.animate()メソッドの options – easing の steps(count, start|end) について

前回の投稿に続き、Element.animate()メソッド の options の easing について試してみます。

easingプロパティ – steps(count, start|end) について

steps は「ステップごとに等分に区切って変化」をします。

例として

steps(数値)

という引数が一つのみ記載する場合と、

steps(数値, start)

または

steps(数値, end)

という二つ目の引数を書く場合があります。

まずは、前回の投稿サンプルを「steps(数値)」の形で書いて試してみます。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>テストHTML</title>

<style>
#start_animation {
    margin-bottom: 10px;
}
</style>

</head>
<body>

<div>
	<input type="button" id="start_animation" value="アニメーション開始">
</div>

<svg xmlns="http://www.w3.org/2000/svg"
    width   = "500"
    height  = "100"
    viewBox = "0 0 500 100"
>
    <rect
        id     = "recttest"
        x      = "0"
        y      = "0"
        width  = "100"
        height = "70"
        fill   = "#999"
    />
</svg>

<script>

// ボタン要素のDOMを取得
let dom_start_animation = document.getElementById('start_animation');

// イベントを付与
dom_start_animation.addEventListener('click',  StartAnimation, false);

// ボタン押下時の処理
function StartAnimation()
{
	// アニメーション対象のDOM要素を取得
	let dom_recttest = document.querySelector("#recttest");

	// keyframesの定義
	const keyframes = [
	    {x:'0px'  , fill:'#999999', easing: 'steps(5)'}, // グレー
	    {x:'100px', fill:'#3399FF', easing: 'steps(5)'}, // ブルー
	    {x:'400px', fill:'#FF9900', easing: 'steps(5)'}, // オレンジ
	];

	// アニメーション処理のタイミングプロパティを定義
	const options = {
	    duration: 5000
	};

	dom_recttest.animate(keyframes, options);
}

</script>

</body>
</html>

サーバ上のHTMLはこちら(test1.html)

上記のサンプルでは、各keyframesに

steps(5)

という5という値を設定しています。

5に設定すると、アニメーションが5段階に別れた状態で変化します。

画面にアクセスすると、各keyframesで指定した開始の状態(グレー)、途中の状態(ブルー)、終了の状態(オレンジ)の各状態に対して、5段階のx軸移動と、色変化をすることがわかります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です