CSSのanimation-timing-functionでアニメーションの進行速度を制御し、動きをカスタマイズする方法をわかりやすく解説

スポンサーリンク

animation-timing-functionプロパティは、アニメーションの進行速度(タイミング)を制御するために使用します。アニメーションの開始から終了までの動き方をカスタマイズすることで、自然な動きや独特のエフェクトを演出できます。

スポンサーリンク

animation-timing-functionプロパティの値とその効果

  • linear: アニメーションの進行速度が一定で、滑らかに動きます。
  • ease: デフォルトの速度設定。ゆっくり始まり、中間で速くなり、最後にゆっくり終わります。
  • ease-in: アニメーションの開始がゆっくりで、終わりに向かって速くなります。
  • ease-out: 最初が速く、終わりがゆっくりになります。
  • ease-in-out: 始まりと終わりがゆっくりで、中間が速くなります。

注意点と関連情報

animation-timing-functionを正しく設定することで、アニメーションの動きにアクセントをつけることができます。ユーザーが自然に感じるアニメーションを作るには、easeease-in-outがよく使われます。一方、一定の速度を保ちたい場合はlinearが適しています。使用するアニメーションのタイプや状況に応じて、最適なタイミング関数を選ぶことが大切です。

animation-timing-functionが効かない理由として考えられること

アニメーションが正しく設定されていない

animation-timing-functionはアニメーションの速度曲線を指定しますが、アニメーション自体が正しく設定されていない場合、このプロパティは機能しません。
対策@keyframesanimation-nameが正しく設定され、要素にアニメーションが適用されていることを確認します。

アニメーションの持続時間が短すぎる

animation-durationが非常に短い場合、animation-timing-functionの効果が目立たず、無効に見えることがあります。
対策animation-durationの時間を適切に設定し、アニメーションの持続時間を確認して調整します。

共通するCSSコード

.css-sample-container {
        width: 100%;
        max-width: 600px;
        padding: 20px;
        margin: 20px auto;
        border: 1px solid #ccc;
        background-color: #f9f9f9;
        text-align: center;
    }
    .css-sample-box {
        margin: 20px 0;
        width: 150px;
        height: 150px;
        background-color: #4CAF50;
        display: inline-block;
        animation-duration: 3s;
        animation-name: css-sample-move;
    }
    @keyframes css-sample-move {
        0% {
            transform: translateX(0);
        }
        100% {
            transform: translateX(200px);
        }
    }
    

animation-timing-function: linear

animation-timing-function: linearは、アニメーションが一定の速度で進行することを意味します。アニメーションの開始から終了まで、変化のスピードが均等です。

HTMLコード

<div class="css-sample-container">
    <div class="css-sample-box css-sample-animation-linear"></div>
    </div>

CSSコード

.css-sample-animation-linear {
    animation-timing-function: linear;
}

表示結果

animation-timing-function: ease

animation-timing-function: easeは、デフォルトのタイミング関数で、アニメーションがゆっくり始まり、途中で速くなり、最後にゆっくり終わります。

HTMLコード

<div class="css-sample-container">
    <div class="css-sample-box css-sample-animation-ease"></div>
    </div>

CSSコード

.css-sample-animation-ease {
    animation-timing-function: ease;
}

表示結果

animation-timing-function: ease-in

animation-timing-function: ease-inは、アニメーションがゆっくり始まり、終了に向かって速度が増していく効果を持ちます。

HTMLコード

<div class="css-sample-container">
    <div class="css-sample-box css-sample-animation-ease-in"></div>
    </div>

CSSコード

.css-sample-animation-ease-in {
    animation-timing-function: ease-in;
}

表示結果

animation-timing-function: ease-out

animation-timing-function: ease-outは、アニメーションが速く始まり、終了に向かって速度が減少します。

HTMLコード

<div class="css-sample-container">
    <div class="css-sample-box css-sample-animation-ease-out"></div>
    </div>

CSSコード

.css-sample-animation-ease-out {
    animation-timing-function: ease-out;
}

表示結果

animation-timing-function: ease-in-out

animation-timing-function: ease-in-outは、アニメーションがゆっくり始まり、中間で速くなり、終了に向かって再びゆっくりになる効果を持ちます。この設定により、自然なアニメーションの進行を作り出すことができます。

HTMLコード

<div class="css-sample-container">
    <div class="css-sample-box css-sample-animation-ease-in-out"></div>
    </div>

CSSコード

.css-sample-animation-ease-in-out {
    animation-timing-function: ease-in-out;
}

表示結果

まとめ

animation-timing-functionプロパティを使用することで、アニメーションの進行速度をカスタマイズすることができます。自然な動きを表現したい場合はeaseease-in-outを使用し、均一な速度でアニメーションを再生したい場合はlinearを選択します。動きにバリエーションを持たせることで、より魅力的なアニメーションを実現できます。