【CSS】 animation のコマ送り steps() を理解する

この記事は約4分で読めます。
サーバー等の運営維持費を得るため記事内に自動表示される広告が含まれています

コーディングのイメージ

こんにちは、さち です。

先日、CSS でパカパカ点滅するアニメーションを作る方法についての記事を書いて、animationsteps() を使いました。

そのときに、steps()仕様使い方についても説明しようと思ったんですが、ちゃんと理解しようとすると奥が深くて、改めて別の記事(この記事)にまとめることにしました。

少しでもお役に立てれば幸いです。

スポンサーリンク

steps(X, Y) の意味

【X】 「ステップ数」の効果

steps(X, Y)X である「ステップ数」はアニメーションの「コマ数」を指定するものです。

効果を理解するために、次のようなサンプルアニメーションを作ってみました。

ソース

<div class="animation" style="--fn: steps(1, end);">1</div>
<div class="animation" style="--fn: steps(2, end);">2</div>
<div class="animation" style="--fn: steps(3, end);">3</div>
<div class="animation" style="--fn: linear;">linear</div>
.animation {
  animation: translate 4s;
  animation-timing-function: var(--fn);
}

@keyframes translate {
    0%{ translate:   0px; }
   50%{ translate: 180px; }
  100%{ translate:   0px; }
}

steps(X, Y)Yend で統一してあるので、X である「ステップ数(コマ数)」が 1 2 3 の3種類でどう変化するかを linear を比較しながら確認してみて下さい。

結果

表示結果

1
2
3
linear

「ステップ数」は、「キーフレーム」間何コマでアニメーションするかを指定します。

今回のアニメーションには、「キーフレーム」が 0% 50% 100% の3個あります。

ステップ数を 3 にした場合、 0% 50% を3コマ、50% 100% を3コマでアニメーションします。つまり、アニメーション全体( 0% ~ 100% )は6コマになります。

ステップ数 3 は、アニメーション全体が3コマになるわけではありません。注意して下さい。

【Y】 「タイミング」の効果

steps(X, Y)Y である「タイミング」は、アニメーションの「コマ」がどのタイミングの瞬間にするか指定するものです。

効果を理解するために、次のようなサンプルアニメーションを作ってみました。

ソース

<div class="animation" style="--fn: steps(3, start);">start</div>
<div class="animation" style="--fn: steps(3, end);">end</div>
<div class="animation" style="--fn: steps(3, jump-none);">none</div>
<div class="animation" style="--fn: steps(3, jump-both);">both</div>
<div class="animation" style="--fn: linear;">linear</div>
.animation {
  animation: translate 4s;
  animation-timing-function: var(--fn);
}

@keyframes translate {
    0%{ translate:   0px; }
   50%{ translate: 180px; }
  100%{ translate:   0px; }
}

steps(X, Y)X はすべて 3 で統一してあるので、Y である「タイミング」が start end jump-none jump-both の4種類でどう変化するのかを linear と比較しながら確認してみて下さい。

結果

表示結果

start
end
none
both
linear

start end jump-none jump-both の4種類で、それぞれアニメーションが異なるのが分かります。

見た目だけでは仕様(仕組み)が分かりにくいので、図で確認してみましょう。(薄い紫色の斜線は lenear の動きです)

start (jump-start)

「start (jump-start)」変化タイミングの図解

start は jump-start の省略表記で、最後のコマは除外し、最初のコマとその他のコマで均等な値にジャンプします。

jump-start と記述しても機能します
end (jump-end)

「end (jump-end)」変化タイミングの図解

end は jump-end の省略表記であり、最初のコマは除外し、最後のコマとその他のコマで均等な値にジャンプします。

jump-end と記述しても機能します
jump-none

「jump-none」変化タイミングの図解

jump-none は、最初と最後のコマを除外して、その他のコマで均等な値にジャンプします。

ステップ数が 2 以上でないと使えません( 1 にするとエラーになる)
jump-both

「jump-both」変化タイミングの図解

jump-both は、最初と最後のコマも含めて、すべてのコマで均等な値にジャンプします。

参考資料

CSS steps() 関数 - MDN

コメント

タイトルとURLをコピーしました