animationプロパティの説明
CSSのanimation
プロパティは、アニメーションに関するスタイルを一括で指定するショートハンド・プロパティです。アニメーションの開始タイミングや、再生時間、再生速度など、各パラメーターを制御するために用意された個別のプロパティを用いることなく、それらをひとまとめに記述したい場合に使用します。
animation
は、最大で8つのプロパティをひとまとめに操作します。各値を半角スペースで区切って列記していくことで、アニメーションを完成させることができます。基本的に値を書く順番は以下のリストの通りで、<time>
を表す数値は、最初の値がanimation-duration
、二番目の値がanimation-delay
であると解釈されます。キーワード型の値は、他のプロパティのものと競合してはならず、特にanimation-name
は任意の文字列を指定できるため、最後に書いた方が安全であると言えます。
animation-duration
:アニメーションの周期が一周する時間animation-timing-function
:アニメーションの変化速度animation-delay
:アニメーションが開始するまでの時間animation-iteration-count
:アニメーションを繰り返す回数animation-direction
:アニメーションを繰り返す祭の開始地点animation-fill-mode
:アニメーションが終了した時点での状態animation-play-state
:アニメーションの再生状態animation-name
:@keyframeと関連付ける名前
animationに指定できる値
<time>
(duration値)- アニメーションが一周するまでにかかる時間を指定します。
delay
値よりも先に記載します。animation-duration
で使用できる値を指定して下さい。 <easing-function>
(timing-function値)- アニメーションの変化速度を指定します。
animation-timing-function
で使用できる値を指定して下さい。 <time>
(delay値)- アニメーションが開始するタイミングを指定します。
duration
値よりも後に記載します。animation-delay
で使用できる値を指定して下さい。 <single-animation-iteration-count>
(iteration-count値)- アニメーションが実行される回数を指定します。
animation-iteration-count
で使用できる値を指定して下さい。 <single-animation-direction>
- アニメーションが実行される方向を指定します。
animation-direction
で使用できる値を指定して下さい。 <single-animation-fill-mode>
- アニメーションの前後でスタイルをどのような状態にするかを指定します。
animation-fill-mode
で使用できる値を指定して下さい。 <single-animation-play-state>
- アニメーションの再生状態を指定します。
animation-play-state
で使用できる値を指定して下さい。 <custom-ident>
,none
@keyframes
にアニメーションを関連付ける名前を指定します。animation-name
で使用できる値を指定して下さい。
animationの使い方とサンプルコード
animation
プロパティの構文は以下の通りです。
/* @name | duration */
animation: key_name 5s;
/* @name | duration | easing-function | delay */
animation: key_name 5s linear 1s;
/* duration | easing-function | delay |
iteration-count | direction | fill-mode | play-state | @name */
animation: 3s ease-in 1s 2 reverse both paused key_name;
animationの実例
それでは簡単な例を見てみましょう。アニメーションを利用して要素の位置を変化させるサンプルです。animation
プロパティで仕様を決めて、@keyframes
で時間軸を制御します。
<div id="as_move">1</div>
#as_move {
padding: 10px;
width: 50px;
height: 50px;
background: #ccc;
text-align: center;
animation: 3s linear 0s infinite alternate as_move;
}
@keyframes as_move {
from { margin-left: 0%; } to { margin-left: 80%; }
}
上記の内容を応用して、色を変化させるアニメーションに変更した例です。
<div id="as_bgc">2</div>
#as_bgc {
padding: 10px;
width: 50px;
height: 50px;
text-align: center;
animation: 3s ease 0s infinite normal as_bgc;
}
@keyframes as_bgc {
0% { background-color: #ff0000; }
50% { background-color: #0000ff; }
100% { background-color: #ff0000; }
}
animationプロパティの値を再確認
animation
プロパティは、CSSアニメーションに関する機能を一括で指定するショートハンド・プロパティです。ここで指定される値は、数値やキーワードが混在しており、記述する順番を誤ると機能しないことがあります。そのような事態を防ぐために、個別のプロパティに分解して理解することをお勧めします。例えば、以下の内容は同じアニメーションを表し、初期値で問題ないものは省略されています。
/* 個別のプロパティ */
#specific {
animation-duration: 3s;
animation-timing-function: ease;
animation-delay: 0s;
animation-iteration-count: infinite;
animation-direction: normal;
animation-fill-mode: none;
animation-play-state: running;
animation-name: as_bgc;
}
/* ショートハンド・プロパティ */
#shorthand {
animation: 3s ease 0s infinite normal as_bgc;
}
/* 名前に対応したキーフレーム */
@keyframes as_bgc {
0% { background-color: #ff0000; }
50% { background-color: #0000ff; }
100% { background-color: #ff0000; }
}
書き方の順番は、基本的にここで紹介した内容の通りです。animation-name
を先頭に書くことも可能ですが、他のキーワード系の値と競合しないように注意して下さい。