CSS プロパティ animation-play-state

CSS animation-play-state 属性详解:CSSアニメーションの再生と一時停止を制御する

CSS animation-play-state 属性详解:CSSアニメーションの再生と一時停止を制御する

この記事では、CSSアニメーションの再生と一時停止を制御できる `animation-play-state` 属性について解説します。構文、値、使用シーンを詳しく説明し、豊富なコード例を交えながら `animation-play-state` 属性の活用方法を分かりやすく解説します。

1. animation-play-state 属性とは?

`animation-play-state` 属性は、CSSアニメーションの再生状態を制御するためのプロパティです。CSSアニメーションモジュールの一部であり、アニメーションの実行状態を動的に変更することができます。

2. animation-play-state 属性の構文

`animation-play-state` 属性には、以下の2つの値を設定することができます。

  • `running`:アニメーションは再生中、またはこれから再生されます。
  • `paused`:アニメーションは一時停止します。

以下は、`animation-play-state` 属性を設定する簡単なコード例です。


<style>
.element {
  animation: myAnimation 2s linear infinite;
  animation-play-state: paused;
}

@keyframes myAnimation {
  from { transform: translateX(0); }
  to { transform: translateX(100px); }
}
</style>

<div class="element"></div>
    

3. animation-play-state 属性の活用シーン

`animation-play-state` 属性は、以下のような場面で活用することができます。

3.1. マウスホバーによるアニメーションの再生制御

マウスホバー時にアニメーションを開始し、マウスアウト時にアニメーションを一時停止する例です。


<style>
.element {
  width: 100px;
  height: 100px;
  background-color: lightblue;
  animation: myAnimation 2s linear infinite;
  animation-play-state: paused;
}

.element:hover {
  animation-play-state: running;
}

@keyframes myAnimation {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}
</style>

<div class="element"></div>
    

3.2. JavaScriptによるアニメーションの再生制御

JavaScriptを使用して、動的にアニメーションを一時停止したり、再生したりする例です。


<style>
.element {
  width: 100px;
  height: 100px;
  background-color: lightblue;
  animation: myAnimation 2s linear infinite;
  animation-play-state: paused;
}

@keyframes myAnimation {
  from { transform: translateX(0); }
  to { transform: translateX(100px); }
}
</style>

<div class="element"></div>

<button id="toggle-animation">アニメーションの切り替え</button>

<script>
const element = document.querySelector('.element');
const toggleButton = document.getElementById('toggle-animation');

toggleButton.addEventListener('click', () => {
  if (element.style.animationPlayState === 'paused') {
    element.style.animationPlayState = 'running';
  } else {
    element.style.animationPlayState = 'paused';
  }
});
</script>
    

3.3. パラパラ漫画風アニメーションの実装

`animation-play-state: paused` とJavaScriptを組み合わせることで、パラパラ漫画のように1コマずつアニメーションを再生する例です。


<style>
.element {
  width: 100px;
  height: 100px;
  background-image: url("sprite.png");
  background-size: 1000px 100px;
  background-position: 0 0;
  animation: frameAnimation 1s steps(10) infinite;
  animation-play-state: paused;
}

@keyframes frameAnimation {
  to { background-position: -1000px 0; }
}
</style>

<div class="element"></div>

<button id="next-frame">次のコマ</button>

<script>
const element = document.querySelector('.element');
const nextFrameButton = document.getElementById('next-frame');
let currentFrame = 0;

nextFrameButton.addEventListener('click', () => {
  currentFrame = (currentFrame + 1) % 10; // 10コマのアニメーションを想定
  element.style.backgroundPosition = `-${currentFrame * 100}px 0`;
});
</script>
    

4. ブラウザ対応状況

`animation-play-state` 属性は、主要なブラウザで広くサポートされています。

ブラウザ バージョン
Chrome 43+
Firefox 16+
Safari 9+
Edge 12+
Opera 30+

詳細なブラウザ対応状況については、Can I use を参照してください。

まとめ

この記事では、`animation-play-state` 属性の基礎から応用までを解説しました。この属性を活用することで、CSSアニメーションをより柔軟に制御し、表現力豊かなWebページを作成することができます。ぜひ、`animation-play-state` 属性を活用してみてください。

参考資料

関連するQ&A

Q1: `animation-play-state` 属性とJavaScriptの `pause()` メソッドの違いは何ですか?

`animation-play-state: paused` はアニメーションを一時停止しますが、JavaScriptの `pause()` メソッドはアニメーションを完全に停止します。一時停止した場合、アニメーションは停止した時点の状態を保持しますが、停止した場合、アニメーションは開始位置に戻ります。

Q2: `animation-play-state` 属性は、すべてのアニメーションプロパティで動作しますか?

はい、`animation-play-state` 属性は、`animation-name`、`animation-duration`、`animation-timing-function`、`animation-delay`、`animation-iteration-count`、`animation-direction`、`animation-fill-mode` などのすべてのアニメーションプロパティと組み合わせて使用できます。

Q3: `animation-play-state` 属性を使用して、アニメーションを逆再生できますか?

いいえ、`animation-play-state` 属性を使用してアニメーションを逆再生することはできません。アニメーションを逆再生するには、`animation-direction` プロパティを `reverse` に設定する必要があります。