プロパティについて
概要
初期値 | “animation-timing-function: ease;” |
適用対象 | すべての要素 |
継承 | No |
パーセント値 | パーセント値は指定できません |
計算値 | 算出された“<easing-function>”値をアイテムとするリスト |
アニメーション | 不可 |
“animation-timing-function”プロパティは“animation-name”プロパティなどで指定されたアニメーションの進捗速度をイージングによって変化させるプロパティです。
“animation-timing-function”プロパティは“@keyframes”ルールの中で使用すると特定のキーフレーム間のイージングの方法を指定することができます。アニメーションの適用対象となる要素に直接適用された“animation-timing-function”プロパティは“@keyframes”ルールの中で指示がないキーフレーム間のイージングの方法を指定します。
イージング関数の入力値は一つのキーフレームから次のキーフレームの間の経過時間です。出力される値はキーフレームの間の遷移の進捗度で、補間の際に使用されます。
“animation-delay”プロパティで指定された遅延時間中は“animation-timing-function”プロパティは適用されません。
サンプルコード
値
値 | 説明 |
---|---|
“<easing-function>”値 | |
linear | アニメーションは等速で進行します |
cubic-bezier() | アニメーションの進捗度をベジェ曲線に沿って変化させます |
ease | アニメーションは速く始まり、徐々に加速した後は最後へ向けて減速します (“cubic-bezier(0.25, 0.1, 0.25, 1)”と同じです。) |
ease-in | アニメーションはゆっくり始まり、最後へ向けて加速します (“cubic-bezier(0.42, 0, 1, 1)”と同じです。) |
ease-out | アニメーションは速く始まり、最後へ向けて減速します (“cubic-bezier(0, 0, 0.58, 1)”と同じです。) |
ease-in-out | アニメーションはゆっくり始まり、徐々に加速し、最後はゆっくり終わります (“cubic-bezier(0.42, 0, 0.58, 1)”と同じです。) |
steps() | アニメーションの進捗度を階段状に変化させます |
step-start | 開始とともに最後のフレームに変わり、最後までそのままです (“steps(1,start)”と同じです。) |
step-end | 最初のフレームが続き、終了とともに最後のフレームに変わります (“steps(1,end)”と同じです。) |
他の値 | |
共通キーワード |
“@keyframes”ルールの中での使用
“animation-timing-function”プロパティを“@keyframes”ルールの中で使用した場合、“animation-timing-function”プロパティの値は宣言が記述されたキーフレームからキーフレーム・セレクタを順番通りに並べ替えた時の次のキーフレームまでのイージングの方法を指定します。
“@keyframes”ルールの中で“animation-timing-function”プロパティによる指定がないキーフレーム間のイージングはアニメーションの適用対象の要素に直接適用されている“animation-timing-function”プロパティの値により設定されます。
複数のアニメーションを指定する
“animation-name”プロパティで複数のアニメーションが指定されている場合、値を“,(コンマ)”で区切って記述することでそれぞれのイージングについての指定をすることができます。値の順番は“animation-name”プロパティで指定した値の順番に対応します。
使用例
3次ベジェ・イージング関数で指定する
.sample-box {
animation-name: SampleAnime1;
animation-duration: 5s;
animation-iteration-count: 1;
animation-timing-function: ease;
}
@keyframes SampleAnime1 {
0% { transform: translate(0); }
100% { transform: translate(300px); }
}
.sample-box {
animation-name: SampleAnime1;
animation-duration: 5s;
animation-iteration-count: 1;
animation-timing-function: ease-in;
}
@keyframes SampleAnime1 {
0% { transform: translate(0); }
100% { transform: translate(300px); }
}
.sample-box {
animation-name: SampleAnime1;
animation-duration: 5s;
animation-iteration-count: 1;
animation-timing-function: ease-out;
}
@keyframes SampleAnime1 {
0% { transform: translate(0); }
100% { transform: translate(300px); }
}
.sample-box {
animation-name: SampleAnime1;
animation-duration: 5s;
animation-iteration-count: 1;
animation-timing-function: ease-in-out;
}
@keyframes SampleAnime1 {
0% { transform: translate(0); }
100% { transform: translate(300px); }
}
.sample-box {
animation-name: SampleAnime1;
animation-duration: 5s;
animation-iteration-count: 1;
animation-timing-function: cubic-bezier(0.5,1.5,0.5,-1);
}
@keyframes SampleAnime1 {
0% { transform: translate(0); }
100% { transform: translate(300px); }
}
ステップ・イージング関数で指定する
.sample-box {
animation-name: SampleAnime1;
animation-duration: 5s;
animation-iteration-count: 1;
animation-timing-function: step-start;
}
@keyframes SampleAnime1 {
0% { transform: translate(0); }
100% { transform: translate(300px); }
}
.sample-box {
animation-name: SampleAnime1;
animation-duration: 5s;
animation-iteration-count: 1;
animation-timing-function: step-end;
}
@keyframes SampleAnime1 {
0% { transform: translate(0); }
100% { transform: translate(300px); }
}
.sample-box {
animation-name: SampleAnime1;
animation-duration: 5s;
animation-iteration-count: 1;
animation-timing-function: steps(5,end);
}
@keyframes SampleAnime1 {
0% { transform: translate(0); }
100% { transform: translate(300px); }
}
キーフレーム間のイージングの方法を指定する
.sample-box {
animation-name: SampleAnime1;
animation-duration: 5s;
animation-iteration-count: 1;
}
@keyframes SampleAnime3 {
0% {
transform: translate(0);
animation-timing-function: ease;
}
20% {
transform: translate(80px);
animation-timing-function: steps(5,jump-both);
}
40% {
transform: translate(160px);
animation-timing-function: ease-in-out;
}
100% { transform: translate(300px); }
}
複数のアニメーションを指定する
.sample-box {
animation-name: SampleAnime1, SampleAnime2;
animation-duration: 5s, 5s;
animation-iteration-count: 1, 1;
animation-timing-function: steps(5,jump-both), linear;
}
@keyframes SampleAnime1 {
0% { transform: translate(0); }
100% { transform: translate(300px); }
}
@keyframes SampleAnime2 {
0% { background-color: rgb(71,209,209)} /* ■ */
20% { background-color: rgb(170,207,83)} /* ■ */
40% { background-color: rgb(248,184,98)} /* ■ */
60% { background-color: rgb(211,56,28)} /* ■ */
80% { background-color: rgb(233,84,107)} /* ■ */
100% { background-color: rgb(180,76,151)} /* ■ */
}