CSSのanimation-directionでアニメーションの再生方向を制御し、動きをカスタマイズする方法をわかりやすく解説

スポンサーリンク

animation-directionプロパティは、アニメーションがどの方向に再生されるかを指定するために使用されます。通常は最初から最後に向かって再生されますが、逆方向や交互に再生することも可能です。

スポンサーリンク

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

  • normal: アニメーションは通常の方向(最初から最後)で再生されます。
  • reverse: アニメーションは逆の方向(最後から最初)で再生されます。
  • alternate: 交互にアニメーションが再生されます。1回目は通常の方向、2回目は逆方向に再生されます。
  • alternate-reverse: 交互にアニメーションが再生されます。1回目は逆方向、2回目は通常の方向に再生されます。

注意点と関連情報

animation-directionプロパティは、ループするアニメーションと組み合わせて使用すると効果的です。特にalternatealternate-reverseは、アニメーションが滑らかに連続して再生されるように見えるため、自然な動きを演出できます。アニメーションの速度やタイミングと合わせて設定することで、視覚的な効果を高められます。

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

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

animation-directionはアニメーションの進行方向を制御しますが、アニメーション自体が正しく設定されていないと、このプロパティも機能しません。
対策@keyframesでアニメーションが正しく定義されていること、およびanimation-nameanimationプロパティでアニメーションが要素に適用されていることを確認します。

アニメーションの持続時間が0になっている

animation-durationが0または設定されていない場合、アニメーションが実行されず、animation-directionも機能しません。
対策animation-durationで適切な時間を設定し、アニメーションが再生されることを確認します。

animation-iteration-countが1に設定されている

animation-directionは、アニメーションが繰り返し再生される際に進行方向を変更するため、アニメーションが1回しか再生されない場合は効果がわかりにくいことがあります。
対策animation-iteration-countを2以上に設定して、アニメーションが繰り返されるようにします。

animation-fill-modeの設定が原因

アニメーションの進行方向が正しく反映されない場合、animation-fill-modeの設定によって、アニメーション開始前や終了後に効果が見えなくなることがあります。
対策animation-fill-modeforwardsbothに設定し、アニメーション終了後も最終状態が維持されるようにします。

共通する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: css-sample-move 3s linear infinite;
    }
    @keyframes css-sample-move {
        0% {
            transform: translateX(0);
        }
        100% {
            transform: translateX(200px);
        }
    }
    

animation-direction: normal

animation-direction: normalは、アニメーションが通常通り最初から最後に向かって再生されることを意味します。

HTMLコード

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

CSSコード

.css-sample-animation-direction-normal {
    animation-direction: normal;
}

表示結果

animation-direction: reverse

animation-direction: reverseは、アニメーションが最後から最初に向かって逆再生されることを意味します。

HTMLコード

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

CSSコード

.css-sample-animation-direction-reverse {
    animation-direction: reverse;
}

表示結果

animation-direction: alternate

animation-direction: alternateは、アニメーションが交互に再生されることを意味します。1回目は通常の方向、2回目は逆方向に再生されます。

HTMLコード

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

CSSコード

.css-sample-animation-direction-alternate {
    animation-direction: alternate;
}

表示結果

animation-direction: alternate-reverse

animation-direction: alternate-reverseは、アニメーションが交互に再生されることを意味しますが、1回目は逆方向、2回目は通常の方向で再生されます。

HTMLコード

<div class="css-sample-container">
    <div class="css-sample-box css-sample-animation-direction-alternate-reverse"></div>
    </div>

CSSコード

.css-sample-animation-direction-alternate-reverse {
    animation-direction: alternate-reverse;
}

表示結果

まとめ

animation-directionプロパティを使用することで、アニメーションの再生方向を柔軟にコントロールできます。normalreverseだけでなく、alternatealternate-reverseを使うことで、視覚的に面白い動きやループのあるアニメーションを作成することが可能です。アニメーションの目的やデザインに合わせて、適切な再生方向を選択しましょう。