CSSアニメーションを実装してみよう
CSSアニメーションとは
CSSアニメーションは@keyframe
とanimation
プロパティと組み合わせることで実装できる
実際のサンプルを見てみよう
ボールが跳ねるアニメーション
@keyframe
@keyframeはアニメーションがどのように変化するかを指定できる
サンプルで書いた@keyframe
は下のようなイメージ
@keyframes アニメーション名{
0%{
/*アニメーションが開始されるときのCSS*/
}
50%{
/*アニメーションの中間のCSS*/
}
100%{
/*アニメーションが終了するときのCSS*/
}
}
0%
~100%
以外にもfrom
~to
で書くことも可能
つまり下の例で言うとanimation1
とanimation2
は同義
@keyframes animation1{
from{
/*アニメーションを開始するときのCSSを記述*/
}
to{
/*アニメーションを終了するときのCSSを記述*/
}
}
@keyframes animation2{
0%{
/*アニメーションを開始するときのCSSを記述*/
}
100%{
/*アニメーションを終了するときのCSSを記述*/
}
}
また、@keyframe
のアニメーション適用タイミングは自由
先ほどのサンプルの@keyframe
を少し自由に変えてみた
少しずつ跳ねる高さを低くするアニメーションができた
animation
animation
でアニメーションの秒数や回数を指定できる
サンプルで使った.ball
に指定されていたanimationプロパティを1つ1つ見ていく
animation-name: animation;
animation-duration: 2s;
animation-iteration-count:infinite;
animation-name
animation-name
はアニメーションに名前をつけるプロパティ
半角英数字で任意の名前を指定し、@keyframe
でその定義名に対してアニメーションの変化を指定する
animation-duration
animation-duration
はアニメーションの秒数を指定するプロパティ
初期値は0sで、指定できる単位はs(秒)かms(ミリ秒)
animation-iteration-count
animation-iteration-count
はアニメーションが何回ループするかを指定できるプロパティ
初期値は1回で、指定する数値の数だけアニメーションがループする
infinite
を指定すると無限にループする
animation-delay
animation-delay
はアニメーションの開始を遅らせるプロパティ
初期値は0sで、指定できる単位はs(秒)かms(ミリ秒)
サンプルでは使っていなかったが、animation-delay
を使うとこのようなアニメーションをすることができる
animationでまとめて指定
animationプロパティはこれらをまとめて指定することもできる
animation: animation 3s infinite 5s;
animation: 名前 アニメーションの秒数 ループの回数 開始までの秒数;
順番は特に指定はないが、先に記述した数値がduration
となるので、duration
とdelay
については順番に注意
まとめ
- CSSアニメーションは
animation
と@keyframes
で実装できる -
animation-name
でアニメーションの名前を定義 - 定義した
animation-name
へ@keyframes
でアニメーションを指定する
他にも様々なanimationプロパティがあって、いろんな表現ができるCSSアニメーション楽しい〜
Discussion