VIDEO LESSON

CSSのanimation-timing-functionの使い方:指定値・実例・効かない原因とブラウザー互換性の解説動画

再生時間 7:21動画を別のタブで開く ↗
動画の字幕・文字起こしを読む

再生中の字幕を濃い黒で表示し、一番上に追従します。字幕の行を選ぶと、その位置から再生できます。

  1. 0:00こんにちは。
  2. 0:00シーエスエス、リファレンス解説です。
  3. 0:03今回のテーマは、アニメーション・タイミング・ファンクションです。
  4. 0:07このプロパティが決めるのは、アニメーションの「進み方」、つまり速さの変化のしかたです。
  5. 0:12たとえば箱が右へ移動する動きで、再生時間も移動する距離もまったく同じでも、
  6. 0:16最初から最後まで同じ速さで進むのか、ゆっくり動き出して最後はそっと止まるのかで、
  7. 0:20見た目の印象は大きく変わります。
  8. 0:24時間の長さはデュレーション、始まるまでの待ち時間はディレイの担当です。
  9. 0:29このタイミング・ファンクションは、その間の「加速と減速のカーブ」を担当するツマミだと考えてください。
  10. 0:35進み方をグラフで考えてみましょう。
  11. 0:38横軸が時間、縦軸がどれだけ進んだかを表すとします。
  12. 0:42等速の動きは、ななめ一直線のグラフになります。
  13. 0:46時間がたつほど、一定の割合で進んでいくからです。
  14. 0:50一方、ゆっくり始まってゆっくり終わる動きは、最初はゆるやか、真ん中で急になり、
  15. 0:56最後はまたゆるやかになる、エスの形に近いカーブを描きます。
  16. 1:02スタートとゴールはどちらも同じなのに、途中の速さの配分が違う。
  17. 1:07それが進み方の違いです。
  18. 1:09このカーブの形を、言葉や数値で指定するのが、今回のプロパティの役割です。
  19. 1:15イメージとしては、電車の発車と停車に似ています。
  20. 1:19急に飛び出して急に止まるのではなく、駅を出るときと入るときはゆっくり、というあの感覚を、
  21. 1:24画面の中の動きで再現するわけです。
  22. 1:29書き方を確認します。
  23. 1:31対象の要素を選ぶセレクター、中括弧、プロパティ名、コロン、値、セミコロンの順です。
  24. 1:37画面の例では、デモというクラスを持つ要素に、進み方としてリニアを指定しています。
  25. 1:43ここではまず形を押さえてください。
  26. 1:45値には、このあと紹介するキーワードや関数を書きます。
  27. 1:49コロンやセミコロンを落とすと、その宣言だけが無効になってしまうので注意しましょう。
  28. 1:55なお、このプロパティは単独では何も動かしません。
  29. 1:59アニメーションの名前や再生時間と組み合わせて、初めて意味を持ちます。
  30. 2:04主なキーワードを並べます。
  31. 2:06イーズは初期値で、ゆっくり始まり、速くなって、ゆっくり終わる、標準的で無難な進み方です。
  32. 2:13リニアは、最初から最後まで同じ速さを保つ等速です。
  33. 2:17イーズインはゆっくり始まってだんだん速くなり、イーズアウトは逆に、速く始まってゆっくり終わります。
  34. 2:24イーズインアウトは、開始と終了の両方をゆるやかにしたもので、イーズよりも緩急がはっきりしています。
  35. 2:32迷ったら、まずイーズとリニアとイーズインアウトの三つを切り替えて、動きの違いを見比べるのがおすすめです。
  36. 2:40なお、何も指定しなければ初期値のイーズが効いています。
  37. 2:45だからこそ、違いを体感するには、あえてリニアに変えて等速の動きと見比べるのが近道です。
  38. 2:52キーワードで足りなければ、キュービックベジエという関数でカーブを自作できます。
  39. 2:58括弧の中に四つの数値を書き、曲線の曲がり具合を決める、二つのつまみの位置を指定します。
  40. 3:05たとえば、ゼロ点四二、ゼロ、ゼロ点五八、一、という組み合わせは、イーズインアウトとほぼ同じカーブになります。
  41. 3:13最初は難しく感じるかもしれませんが、開発者ツールにはカーブをグラフで編集できる仕組みがあり、
  42. 3:18動かしながら動きを試せます。
  43. 3:23キーワードは、この数値の代表例に名前を付けたものだ、と理解すると整理しやすいです。
  44. 3:29もう一つの関数がステップスです。
  45. 3:31これは滑らかに進むのではなく、動きを指定した段数で区切って、カクカクと段階的に進ませます。
  46. 3:37たとえばステップス、カッコ四と書けば、全体の動きが四段階に分かれます。
  47. 3:42カウントダウンの表示や、ドット絵のキャラクターがコマ送りのように動く表現などで使われる指定です。
  48. 3:48似たキーワードに、最初の一段をすぐ進めるステップ・スタートと、最後まで待ってから一段進めるステップ・エンドもあります。
  49. 3:56滑らかさとは逆の、機械的なリズムを作る道具と覚えてください。
  50. 4:00実例で比べてみましょう。
  51. 4:02土台として、箱が右へ一レムだけ移動する、スライドインというキーフレームを用意します。
  52. 4:10下の指定では、この動きを一秒かけて、〇・三秒の遅延のあと、一回だけ再生しています。
  53. 4:18そして最後の行で、進み方をリニアに上書きしています。
  54. 4:23このとき、再生時間は一秒、移動量は一レムで、ほかの設定は変わりません。
  55. 4:29変えているのは進み方だけです。
  56. 4:32画面で比べると、リニアの方は、最初の一歩からゴールまで、ずっと同じペースで進み続けます。
  57. 4:40記事のサンプルは再読み込みで最初から再生できますので、この等速な進み方を、
  58. 4:45まず目で追って感覚をつかんでください。
  59. 4:51では最後の行の値だけを、イーズインアウトに変えてみます。
  60. 4:56再生時間も移動量も同じですが、動き出しはそっと、そして最後はゆるやかに減速して止まるように見えます。
  61. 5:05同じ一秒でも、こちらの方が丁寧で柔らかい印象になります。
  62. 5:10ここで大事な注意が一つ。
  63. 5:12進み方を書いたあとに、アニメーションの一括指定を書き足すと、一括指定に含まれる初期値で、
  64. 5:17進み方まで上書きされてしまいます。
  65. 5:23個別の指定は、一括指定より後ろに書くのが安全です。
  66. 5:27間違えやすい点を一つ。
  67. 5:29タイミング・ファンクションは、アニメーション全体に一本のカーブを引く指定だと思われがちですが、
  68. 5:34実際はキーフレームの区間ごとに適用されます。
  69. 5:39キーフレームが、ゼロパーセント、五〇パーセント、百パーセントのように複数ある場合、
  70. 5:44その間ごとに進み方が効きます。
  71. 5:48つまり区間の数が多いと、その分だけ加速と減速が繰り返され、区間の境目で急に速さが変わって見えることがあります。
  72. 5:56思ったよりギクシャクすると感じたら、区間ごとの効き方を疑ってみてください。
  73. 6:02効かないときの確認です。
  74. 6:03まず前提として、進み方は単独では動きません。
  75. 6:07アニメーションの名前と再生時間がなければ、比較する動き自体が存在しません。
  76. 6:12次に、先ほど触れた一括指定との順番を確認します。
  77. 6:16後から書かれた一括指定が、進み方を初期値のイーズへ戻しているかもしれません。
  78. 6:21開発者ツールでは、スタイルズで宣言に取り消し線が付いていないか、コンピューテッドで最終的な値がどうなっているかを見ます。
  79. 6:30また、端末やブラウザーの「動きを減らす」設定が有効だと、アニメーション自体が止められ、
  80. 6:35指定が効いていないように見える場合もあります。
  81. 6:40最後に基本情報をまとめます。
  82. 6:42初期値はイーズで、書かなければこの進み方で動きます。
  83. 6:46継承はしません。
  84. 6:47ほかのアニメーション関連のプロパティと同じく、動きを持たせたい要素ごとに指定します。
  85. 6:53ブラウザーの対応は広く、クローム、エッジ、ファイアフォックス、サファリのいずれでも、
  86. 6:56長く使えてきたプロパティです。
  87. 7:00練習として、同じ動きにリニアとイーズインアウトを設定し、どちらが内容に合うかを言葉で説明してみてください。
  88. 7:08時間と距離が同じでも、進み方で印象が変わる。
  89. 7:11その感覚をつかめれば、このプロパティは使いこなせます。
  90. 7:15次回は、繰り返し回数を決める、アニメーション・イテレーション・カウントを取り上げます。
日本語字幕をダウンロード(WebVTT)

この動画で学べること

animation-timing-functionの役割と主な指定値を解説。同じ時間と移動量で速度の変化を比較します。初期値・継承・ブラウザー互換性、効かないときの確認方法も整理します。

解説記事・サンプルコードを読む:CSSのanimation-timing-functionの使い方:指定値・実例・効かない原因とブラウザー互換性 →