【CSS】イメージで覚えるanimation-timing-functionプロパティ!!

こんにちは。

CSSアニメーションを勉強していると、animation関連のプロパティを習うと思います。その中でも特に覚えづらいのがanimation-timing-function プロパティ。指定する値も「ease」や「ease-out」など、正直イメージのしづらい値でよく理解できていない人も多いのではないかと思います。

 何かいい覚え方ないかな…

そんなあなたのお悩みにお答えして、今回はanimation-timing-function プロパティ

・基本的な使い方
・各値をイメージで覚える方法

をご紹介します!!

animation-timing-functionとは

animation-timing-functionの読み方

animation-timing-function は「アニメーション タイミング ファンクション」と読みます。

timingとは日本語で「何らかの行為をすべき判断」を指します。なので直訳すると、「アニメーションのタイミングをいじる機能」になりますが、

正直animation-timing-function は英語で覚えるより挙動で覚えた方がいいと筆者は考えています。

animation-timing-function はアニメーションの再生速度の変化パターンを設定するプロパティ

animation-timing-function の用途を具体的にいうと、

アニメーションの再生速度の変化パターンを設定するプロパティ

です。

アニメーションを等速で動かしたり、始めはゆっくり、そして徐々に早くするなど、決められた再生時間の中でどのように再生させるのかを設定することができます。

animation-timing-functionで利用できる値

animation-timing-functionでは以下の値を使うことができます。

説明
 ease  加速を付けてゆっくりと始まり、ゆっくりと終わります。(初期値)
 ease-in  ゆっくりと始まり、一定速度で終わります。
 ease-out  一定速度で始まり、ゆっくりと終わります。
 ease-in-out  ゆっくりと始まり、ゆっくりと終わります。
 linear  最初から最後まで一定の速度で変化します。

対応ブラウザ

対応ブラウザは以下の通りです。

PC用ブラウザ 対応状況
Chrome 完全対応
Edge 完全対応
Firefox 完全対応
Internet Explorer 完全対応
Opera 完全対応
Safari 完全対応
スマートフォン用ブラウザ 対応状況
Android webview 完全対応
Android版Chrome 完全対応
Android版Firefox 完全対応
Android 版 Opera 完全対応
iOS版Safari 完全対応
Samsung Internet 完全対応

animation-timing-functionの基本的な使い方

animation-timing-function は通常、animation-nameやanimation-durationのようなアニメーション関連のプロパティと併用して使用します。

サンプルコードを見てみましょう。

See the Pen
animation-timing-function–ease
by ryuga (@ryuga)
on CodePen.

サンプルコードは赤い円が左端から右端に2秒間かけて移動する例です。

animation-timing-function はこのようにアニメーション関連のプロパティと併用して使用します。

次項でこの値に関して詳しくみていきましょう!

イメージで覚えるanimation-timing-functionプロパティ

animation-timing-function の値は英語ではイメージしづらい部分があります。

そこで今回は、これらの値を全て新幹線で例えてみようと思います。皆さんもイメージで覚えてみましょう!

ease

animation-timing-function の初期値でもある ease は、意味としては加速を付けて、ゆっくりと始まってゆっくりと終わるというような再生速度の変化をします。

これは新幹線で例えるならば、出発駅から発車して到着駅で止まるまでのスピードの一連の流れのようなイメージです。

新幹線は出発して徐々に加速をしてゆっくり速度を上げますよね。そして到着駅に近くなるにつれ減速してゆっくり停止します。

easeの挙動はまさにこの動きをします。

See the Pen
animation-timing-function–ease
by ryuga (@ryuga)
on CodePen.

ease-in

続いて ease-in は、挙動としてはゆっくりと始まり一定速度で終わる、というような再生速度の変化をします。

ease-in のイメージとしては、先ほどのように出発駅から発車して、ある程度距離を進んで一定の速度になったときにアニメーションが終了するイメージです。

新幹線は出発駅からゆっくり発車して徐々に速度を上げ、やがて一定速度になります。

ease-in はこの一定速度になるまでのスピードの一連の流れを表すような速度変化になります。

See the Pen
animation-timing-function–ease-in
by ryuga (@ryuga)
on CodePen.

ease-out

ease-out は先ほどの ease-in とは逆で、一定速度で始まり、ゆっくり終わるといった挙動をします。

新幹線でいえばある程度距離を走って一定速度になってから到着駅で停止するまでのスピードの一連の流れのようなイメージです。

See the Pen
animation-timing-function–ease-out
by ryuga (@ryuga)
on CodePen.

ease-in-out

ease-in-out の挙動はゆっくりと始まり、ゆっくりと終わるといった再生速度の変化をします。

あれ、easeと似てないか?と思った人もいるかもしれません。

確かにease-in-out は ease と非常によく似ています。

そこで ease-in-out は駅間の短い各駅列車の駅の出発から到着までのスピードの一連の流れだと思ってください。

各駅列車だと、新幹線よりは駅間も短いのでそれほど加速はしないですよね。

ease-in-out は ease のあまり早く加速しないバージョンと捉えてください。

See the Pen
animation-timing-function–ease-in-out
by ryuga (@ryuga)
on CodePen.

linear

linear最初から最後まで一定の速度で変化します。

今までの ease-in やease-out のような速度の変化は一切ありません。

See the Pen
animation-timing-function–linear
by ryuga (@ryuga)
on CodePen.

まとめ

いかがでしょうか?

今回はanimation-timing-functionプロパティの各値をイメージで覚える方法を解説しました。一番は実装経験を積んで覚えることですが、このようにイメージで覚えるのも手段の一つだと思います。

各値の挙動を理解して、適材適所で利用できるようにしましょう!

参考文献:https://developer.mozilla.org/ja/docs/Web/CSS/animation-timing-function

BLOGコンテンツをパーソナライズします

あなたは現在「プログラミング学習者」ですか?