CSS プロパティ animation-duration

CSS animation-duration プロパティ詳解:アニメーション時間を制御する

CSS animation-duration プロパティ詳解:アニメーション時間を制御する

CSSアニメーションにおいて、`animation-duration` プロパティはアニメーションの持続時間を制御する上で欠かせないものです。 このプロパティを使用することで、アニメーションが1サイクル完了するまでの時間を秒またはミリ秒単位で指定できます。 この記事では、`animation-duration` プロパティの詳細、使用方法の例、他のアニメーションプロパティとの関連性について解説していきます。

1. animation-durationとは?

`animation-duration` プロパティは、CSSアニメーションが1サイクル(開始から終了まで)にかかる時間を指定するために使用します。 デフォルト値は `0s` で、これはアニメーションが実行されないことを意味します。 アニメーションを視覚的に表現するためには、`animation-duration` プロパティに正の値を設定する必要があります。

2. 構文と値

`animation-duration` プロパティの構文は以下の通りです。


animation-duration: <時間>;

ここで、`<時間>` には、以下のいずれかの値を指定できます。

  • **秒 (s)**: 例:`1s`、`2.5s`
  • **ミリ秒 (ms)**: 例:`500ms`、`1000ms`

`animation-duration` プロパティの値には、正の数値だけでなく、0や負の数値を指定することもできます。

  • **正の数値:** アニメーションの再生時間が指定された秒数またはミリ秒数になります。
  • **0:** アニメーションは実行されません。
  • **負の数値:** アニメーションは即座に終了します。これは、アニメーションの最終状態を初期状態として表示する場合などに利用できます。

3. animation-duration の使用方法

`animation-duration` プロパティは、`@keyframes` ルールと組み合わせて使用します。 `@keyframes` ルールはアニメーションの各段階でのスタイルを定義し、`animation-duration` プロパティはそのアニメーションが完了するまでの時間を指定します。

3.1. 単一のアニメーション

以下は、`animation-duration` プロパティを使用して、要素を2秒かけてフェードインさせる例です。


<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>animation-duration の例</title>
  <style>
    .fade-in {
      width: 100px;
      height: 100px;
      background-color: red;
      animation-name: fading;
      animation-duration: 2s;
    }

    @keyframes fading {
      0% { opacity: 0; }
      100% { opacity: 1; }
    }
  </style>
</head>
<body>
  <div class="fade-in"></div>
</body>
</html>

上記の例では、`animation-duration: 2s;` によって、`fading` という名前のアニメーションが2秒間かけて実行されます。

3.2. 複数のアニメーション

1つの要素に複数のアニメーションを適用し、それぞれに異なる `animation-duration` を設定することもできます。 以下は、要素を3秒かけて右に移動させながら、2秒かけてフェードアウトさせる例です。


<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>複数の animation-duration の例</title>
  <style>
    .box {
      width: 100px;
      height: 100px;
      background-color: blue;
      animation-name: move, fade;
      animation-duration: 3s, 2s;
    }

    @keyframes move {
      from { transform: translateX(0); }
      to { transform: translateX(200px); }
    }

    @keyframes fade {
      from { opacity: 1; }
      to { opacity: 0; }
    }
  </style>
</head>
<body>
  <div class="box"></div>
</body>
</html>

上記の例では、`animation-duration: 3s, 2s;` によって、`move` アニメーションは3秒間、`fade` アニメーションは2秒間実行されます。

4. 他のアニメーションプロパティとの関係

`animation-duration` プロパティは、他のアニメーションプロパティと連携して、より複雑なアニメーション効果を実現することができます。 主な関連プロパティは以下の通りです。

  • `animation-delay`: アニメーションの開始を遅延させる時間
  • `animation-iteration-count`: アニメーションの反復回数
  • `animation-timing-function`: アニメーションの速度変化

これらのプロパティと `animation-duration` プロパティを組み合わせることで、アニメーションの開始時間、再生時間、反復回数、速度変化などを細かく制御することができます。

5. ブラウザの互換性

`animation-duration` プロパティは、主要なブラウザで広くサポートされています。 以下の表は、各ブラウザにおけるサポート状況を示しています。

ブラウザ バージョン
Chrome 4+
Firefox 5+
Safari 4+
Edge 12+
Internet Explorer 10+

古いブラウザの中には、`animation-duration` プロパティをサポートしていないものもあります。 そのようなブラウザに対応する必要がある場合は、JavaScriptによるアニメーション実装などを検討する必要があります。

6. まとめ

`animation-duration` プロパティは、CSSアニメーションの持続時間を制御するための重要なプロパティです。 このプロパティを使用することで、アニメーションの実行時間を秒またはミリ秒単位で指定することができます。 `animation-duration` プロパティと他のアニメーションプロパティを組み合わせることで、より複雑で表現力豊かなアニメーション効果を実現することができます。

CSS animation-duration に関するQ&A

Q1: `animation-duration` プロパティを指定しないとどうなる?

`animation-duration` プロパティを指定しない場合、デフォルト値の `0s` が適用されます。 これは、アニメーションが実行されないことを意味します。 アニメーションを視覚的に表現するためには、`animation-duration` プロパティに正の値を設定する必要があります。

Q2: 複数のアニメーションに異なる `animation-duration` を設定することはできる?

はい、可能です。 1つの要素に複数のアニメーションを適用し、それぞれに異なる `animation-duration` を設定することができます。 `animation-duration` プロパティの値は、カンマ区切りで複数指定することができます。

Q3: `animation-duration` プロパティは、JavaScriptで変更できる?

はい、可能です。 JavaScriptを使用して、`animation-duration` プロパティの値を動的に変更することができます。 これにより、ユーザーの操作やイベントに応じてアニメーションの速度を変更するなどのインタラクティブな表現が可能になります。