CSSアニメーション「CSS Animation」
CSSアニメーションには
CSS TransitionとCSS Animationの2つの実装方法があります。
2つの違いについてはこちらの記事で紹介しています。
前回は、「CSS Transition」について説明しました。
今回はCSS Animationについておさらいしていきたいと思います。
CSS Animation(CSS アニメーション)とは?
始点から終点までの二点間の任意の経過時点で、その地点ごとの状態を指定することが出来ます。
細かい動きのアニメーションを実装する時に利用します。
■まずは簡単なDEMO!
3秒間の内、1地点のみ縦方向に-6pxずらす
を無限に繰り返すことで、ふわふわした浮遊感を出している
シンプルなアニメーションです。
CSS Animationの使い方
前項のDEMOを元に、簡単にCSS Animationの使い方について説明します。
・html
1 2 3 |
<div> <i class="fas fa-cloud"></i> </div> |
Font Awesome のcloudアイコンを表示しているだけのシンプルな記述です。
・css
1 2 3 4 5 6 7 8 9 10 |
div{ font-size:60px; animation: float 3s linear infinite; } @keyframes float { 0% {transform: translateY(0);} 35% {transform: translateY(-6px);} 65% {transform: translateY(0);} 100% {transform: translateY(0);} } |
3行目がanimationのプロパティです。
ここでアニメーションにかける時間や速度などを指定します。
5~10行目の「keyframes」と必ずセットで使います。
keyframesで、開始(0%)から終了(100%)の各地点でどのように変化させるかを細かく決めます。
animationプロパティ
以下の8つの細かいプロパティがあり、それらをショートハンドするanimationプロパティで構成されています。
セレクタ{
animation: name duration timing-function delay iteration-count direction fill-mode play-state;
}
記述の順序については、「transition-duration」を「transition-delay」より、必ず先に記述するようにだけ注意しましょう。
animation-name | アニメーション名(= @keyframes に適用する名前)を指定します まずこれを指定しない限りアニメーションされませんので必ず必要です。 |
---|---|
animation-duration | アニメーションに掛かる時間を指定します 単位は秒(s)またはミリ秒(ms)です。 3sとすると3秒かけてアニメーションします。 |
animation-timing-function | アニメーションのパターンを指定します
その他参考 Easing function 早見表 |
animation-iteration-count | アニメーションの繰り返し回数を指定します
|
animation-direction | アニメーションの再生方向を指定します
|
animation-delay | アニメーションがはじまるまでの遅延時間を指定します 単位は秒(s)またはミリ秒(ms)です。 初期値は0sで、すぐにアニメーションが始まります。 3sとすると、3秒後にアニメーションが始まります。 |
animation-fill-mode | アニメーション再生中・再生後のスタイルを指定します
|
animation-play-state | アニメーションの再生・停止を指定します
|
■個別に記述も可能
animationプロパティは以下のように個別に記述することもできます。
1 2 3 4 5 6 7 8 9 10 11 12 |
div{ animation-name: float; animation-duration: 3s; animation-timing-function: linear; animation-iteration-count : infinite; } @keyframes float { 0% {transform: translateY(0);} 35% {transform: translateY(-6px);} 65% {transform: translateY(0);} 100% {transform: translateY(0);} } |
@keyframes
@keyframes ○○○○{}
は必ずセットで記述します。
○○○○ にはanimation-nameが入ります。
開始から終了の各地点でどのように変化させるかを細かく決めます。
値は「from」「to」「パーセンテージ(%)」で指定できます。
DEMO では35%の地点で縦方向に-6pxずらすことでふわふわと上下する動きを実現しています。
1 2 3 4 5 6 |
@keyframes float { 0% {transform: translateY(0);} 35% {transform: translateY(-6px);} 65% {transform: translateY(0);} 100% {transform: translateY(0);} } |
もしくは以下のように記述します。
1 2 3 4 |
@keyframes float { from {transform: translateY(0);} to {transform: translateY(0);} } |