このウェブサイトはご利用の端末での閲覧に対応していません。
This website does not support your device.

“CSS Animations”

記事Aug.30th, 2021
CSS3でアニメーションに関する仕様を定義した“CSS Animations”について。

仕様書の概要

概要

CSS Animations”はCSSによるアニメーションについての仕様を定義している仕様書です。

アニメーションのキーフレームを定義する@keyframes”ルールやアニメーションを要素に適用したり、アニメーションを制御するanimation”プロパティなどのプロパティが定義されています。

用語など

アニメーションの適用

CSSのアニメーションは要素に適用されるスタイルを決定するカスケードにアニメーションのための宣言で指定された値を追加し、スタイルを上書きすることで適用されます。アニメーションによるスタイルはすべての通常(!importantが付けられていない)の宣言よりも優先されますが、!importantが付けられた宣言は上書きできません。

複数のアニメーションが同じプロパティの挙動について指定している場合にはanimation-name”プロパティの値として記述順序が最も後に記述されているアニメーションが他のアニメーションによる指定を上書きします。

アニメーションはアニメーションが適用される前後に要素に適用されているスタイル・ルールの計算値には影響を与えません。また、アニメーションが適用された後も既定ではanimation-delay”プロパティによって指定された遅延時間中はアニメーションによるスタイルは適用されません。ただし、animation-fill-mode”プロパティによる指定で遅延時間中やアニメーションの終了後もアニメーションによるスタイルを適用することができます。

アニメーションの実行中はアニメーションに関係するプロパティの値はアニメーションによって算出されます。ただし、カスケードによって他の宣言の値が優先される場合があります。

アニメーションが適用されていてまだ終了していない時、もしくはすでに終了していてanimation-fill-mode”プロパティの値が“forwards”か“none”である場合、will-change”プロパティにアニメーションに関係するプロパティがすべて含まれるかのように扱われます。

アニメーションは要素にアニメーションを適用するスタイル・ルールとそれに関連付けられる@keyframes”ルールが両方解決されると開始します。アニメーションが適用されていても関連付けられる@keyframes”ルールが見つからない場合にはアニメーションは開始されません。アニメーションはアニメーションを適用するスタイル・ルールを:hover”擬似クラスやスクリプトなどで動的に追加することでも開始することができます。

アニメーションは開始するとアニメーションが終了するかanimation-name: none;”になるまで続きます。

アニメーションのためのスタイルが変更された場合にはアニメーションの途中だったとしても初めから変更後の値が指定されていたかのように扱われます。

display”プロパティの値が“none”に変更された場合、実行中のアニメーションは子孫要素のものも含めてすべて終了されます。

display”プロパティの値が“none”から“none”以外の値に変更された場合にはその要素とdisplay: none;”でない子孫要素のアニメーションを開始します。

ユーザー・エージェントは文書の出力先がインタラクティブでない場合、例えば紙に印刷される場合などにはアニメーションを無視することができます。

DOMイベント

アニメーションの開始と終了、繰り返されるアニメーションの一つの周期の終了、アニメーションの中止はDOMイベントを発生させます。animation-name”プロパティによって複数のアニメーションが適用されている場合にはそのそれぞれがイベントを発生させます。

これらのイベントはアニメーションをスクリプトを使用して制御したり、アニメーションと同期したアクションを起こすために使用することができます。

AnimationEvent”のプロパティとメソッド

animationName
イベントを発生させたアニメーションのanimation-name”プロパティの値。
elapsedTime
アニメーションが開始してからイベントが発生した時点までの経過時間の秒数。アニメーションが一時停止されていた時間は含みません。
pseudoElement
イベントを発生させたアニメーションが対象とするCSSの擬似要素の名前。擬似要素でなければ空文字列です。
AnimationEvent()
イベント・コンストラクタです。

AnimationEvent”のイベント・タイプ

animationstart
アニメーションが開始した時に発生します。遅延時間がある場合は遅延時間が終わった時に発生します。
animationend
アニメーションが終了した時に発生します。
animationiteration
アニメーションの1回の周期が終了した時に発生します。このイベントは“animationend”が同時に発生する場合には発生せず、アニメーションが繰り返されない場合には一度も発生しません。
animationcancel
アニメーションが“animationend”が発生せずに終了された時に発生します。

イベントハンドラ

以下のイベントハンドラはすべてのHTMLの要素でイベントハンドラ・コンテント属性とイベントハンドラIDL属性として使用できます。また、すべての“Document”オブジェクトと“Window”オブジェクトでイベントハンドラIDL属性として使用できます。

イベントハンドラ属性 イベント 説明
onanimationstart="" animationstart アニメーションが開始した時に発生するイベント
onanimationiteration="" animationiteration アニメーションの1周期が終了した時に発生するイベント
onanimationend="" animationend アニメーションが終了した時に発生するイベント
onanimationcancel="" animationcancel アニメーションが中止された時に発生するイベント

定義されているCSSルール

プロパティ

プロパティ 説明
animation-name: アニメーションのキーフレームを指定する
animation-duration: アニメーションの所要時間を指定する
animation-timing-function: アニメーションのイージングの方法を指定する
animation-iteration-count: アニメーションの繰り返しを指定する
animation-direction: アニメーションの再生方向を指定する
animation-play-state: アニメーションを一時停止する
animation-delay: アニメーションの遅延時間を指定する
animation-fill-mode: アニメーションのスタイルを実行前後も適用
animation: アニメーションを指定する

@ルール

@ルール 説明
@keyframes アニメーションのキーフレームを設定する
一番上へ
トップにもどる
シェアする
シェアする
Facebookでシェアする
ツイート
Google+でシェア
Pocket
はてなブックマーク