CSS
 Computer >> コンピューター >  >> プログラミング >> CSS

CSSのanimation-timing-functionでアニメーションの速度曲線を指定する方法

CSSでアニメーションの速度曲線(イージング)を指定するには、animation-timing-functionプロパティを使用します。このプロパティにより、アニメーションが開始から終了までどのようなペースで進行するかを細かく制御できます。

主な速度曲線の値

  • ease … 初期値。ゆっくりと始まり、中盤で加速し、最後はゆっくりと終わります。
  • ease-in … ゆっくりと始まり、徐々に速くなります。
  • ease-out … 速く始まり、徐々に遅くなります。
  • ease-in-out … ゆっくり始めて加速し、最後にゆっくりと終わります。
  • linear … 始めから終わりまで一定の速度で進みます。

実装例

次のコードでは、2つのボックスにそれぞれ「ease」と「ease-in」を適用し、動きの違いを比較できます。ブラウザで実行して挙動を確認してみてください。

<!DOCTYPE html>
<html>
  <head>
    <style>
      div {
        width: 150px;
        height: 200px;
        position: relative;
        background-color: yellow;
        animation-name: myanim;
        animation-duration: 2s;
        animation-direction: alternate-reverse;
        animation-iteration-count: 3;
      }
      @keyframes myanim {
        from {left: 100px;}
        to {left: 200px;}
      }
      #demo1 {animation-timing-function: ease;}
      #demo2 {animation-timing-function: ease-in;}
    </style>
  </head>
  <body>
    <div id = "demo1">ease effect</div>
    <div id = "demo2">ease-in effect</div>
  </body>
</html>

コードの解説

@keyframesで定義した「myanim」は、leftプロパティを100pxから200pxへ移動させるアニメーションです。#demo1には「ease」(緩やかに始まり、加速してから減速)を、#demo2には「ease-in」(ゆっくり始まり、徐々に加速)を適用しています。アニメーション時間は2秒、反復回数は3回、方向はalternate-reverseに設定されているため、往復しながら繰り返し再生されます。

また、cubic-bezier()関数を使用すれば、4つの制御点を指定して独自のカスタム速度曲線を定義することも可能です。より高度なイージング表現が必要な場合はぜひ活用してください。

  1. CSSのflex-directionでフレックスアイテムを水平方向に配置する方法

    CSSでフレックスアイテムを水平方向に配置するには、flex-directionプロパティにrow値を指定します。flex-directionは、フレックスコンテナ内のアイテムが並ぶ方向(主軸の方向)を決定する重要なプロパティです。 flex-direction: row の基本 rowはflex-directionのデフォルト値で、アイテムを左から右へ横一列に並べます。なお、文書の書字方向が右から左(RTL)の場合は、逆に右から左へ並びます。 flex-directionで使える主な値 row:アイテムを水平方向(左から右)に配置 row-reverse:アイテムを水平方向(右から左)に配

  2. CSSでフレックスラインをコンテナの先頭に表示する方法(align-content: flex-start)

    CSSのalign-contentプロパティにflex-startという値を指定すると、フレックスコンテナ内の複数のフレックスライン(行)をコンテナの先頭側に寄せて配置できます。 align-content: flex-startの基本 align-contentプロパティは、交差軸(cross axis)方向におけるフレックスライン全体の配置を制御するプロパティです。flex-startを指定すると、すべてのフレックスラインが交差軸の開始位置、つまりコンテナの先頭にまとめられて表示されます。 注意点として、align-contentが機能するのはflex-wrap: wrap;などで折り