Css Animation

参考サイト メイン画像

基本の考え方

animation-name

@keyframes XXX {} で設定したアニメーションの名前を設定します。

animation-duration

アニメーションの時間を設定します。アニメーションがループする設定の場合は、設定した秒数が繰り返し再生されます。
設定時は「1s」のように単位の「s(秒)」または「ms(0.?秒)」が必要です。

animation-timing-function

アニメーションが変化する速度

animation-delay

アニメーションが開始するタイミングを設定します。
正数(+)を設定すると遅らせることができます。
負数(-)を設定した場合は、設定した秒数の分だけ進んだ状態でアニメーションが開始されます。
設定時は「0.5s」のように単位の「s(秒)」または「ms(0.?秒)」
初期値は0で、0sの場合は単に「0」とし、単位は必要ありません。

animation-iteration-count

アニメーションを何回繰り返すか設定します。
0以上の正数を設定でき、負数は無効となります。
「0.5」や「1.2」のような小数のある値を設定することも可能です。
infiniteを設定すると、アニメーションは無限に繰り返されます。

animation-direction

アニメーションの向きを設定します。

animation-play-state

アニメーションの再生状態を設定します。

animation-fill-mode

要素のアニメーションの前後のスタイルを決められます

アニメーションの書き方

      

        /* まとめて書いた場合 アニメーション名 アニメーション時間 イージング 遅延時間 繰り返し 逆再生 最後の状態を保持 */
        animation: animationName 1s ease 0.5s infinite alternate forwards;

        /* 分けて書いた場合 */
        animation-name: animationName;            /* アニメーション名 */
        animation-duration: 1s;                 /* アニメーション時間 */
        animation-timing-function: ease;       /* イージング */
        animation-delay: 0.5s;                /* 遅延時間 */
        animation-iteration-count: infinite; /* 繰り返し */
        animation-direction: alternate;     /* 逆再生 */
        animation-fill-mode: forwards;     /* 最後の状態を保持 */

      
    

実際に使用してみよう

フェードイン10秒無限基本
        

          .animation-item {
            width: 200px;
            height: 200px;
            background-color: red;
            margin: 30px auto;
            padding: 0;
            /* 名前 */
            /* 時間 */
            /* 無限再生 */
            /* アニメーションが終わった後のスタイルを保持 */
            animation: fadeIn 10s infinite forwards;
          }

          /* アニメーションの変化の割合+名前 */
          @keyframes fadeIn {     
            0% {
              /* 透明化 */
              opacity: 0;
            }
            100% {
              opacity: 1;
            }
          }

        
      
フェードイン10秒無限ループ+ぺジェ曲

ぺジェ曲線は、使用しても使用しなくても余り変化わからない気がする

        

          .animation-item1 {
            width: 200px;
            height: 200px;
            background-color: red;
            margin: 30px auto;
            padding: 0;

            /* 名前 */
            /* 時間 */
            /*cubic-bezier(0.33, 1, 0.68, 1) は、CSS のアニメーションやトランジションの速度を制御するためのカスタムベジェ曲線を定義しています。
            このベジェ曲線は、アニメーションの進行速度を時間に対してどのように変化させるかを指定します。
             0.33 は、開始点の x 座標です。1 は、開始点の y 座標です。0.68 は、終了点の x 座標です。1 は、終了点の y 座標です。 */
            /* 無限再生 */
            /* アニメーションが終わった後のスタイルを保持 */
            animation: fadeIn 10s cubic-bezier(0.33, 1, 0.68, 1) infinite forwards;
          }

          /* アニメーションの変化の割合+名前 */
          @keyframes fadeIn {    
            0% {
              opacity: 0;
            }
            100% {
              opacity: 1;
            }
          }

        
      
スライドイン(x180,右)(x-180,左)10秒間移動。再生されない場合は、ページリロード
        

          .animation-item2 {
            width: 200px;
            height: 200px;
            background-color: red;
            margin: 30px auto;
            padding: 0;
            animation: slideIn 10s forwards;
          }
          
          @keyframes slideIn {
            0% {
              /* 180px 右に移動 */
              transform: translateX(180px);
              opacity: 0;
            }
            25% {
              transform: translateX(0);
            }
            50% {
              /* 180px 左に移動 */
              transform: translateX(-180px);
            }
            100% {
              transform: translateX(0);
            }
            40%,100% {
              opacity: 1;
            }
          }

        
      
ポよぽよ動く
        

          .animation-item3 {
            width: 200px;
            height: 200px;
            background-color: red;
            margin: 30px auto;
            padding: 0;
            animation: poyon 10s ease-in-out infinite forwards;
          }

          @keyframes poyon {
            0%  {
              transform: scale(1.0, 1.0) translate(0, 0);
            }
            15% {
              transform: scale(0.98, 0.9) translate(0, 5px);
            }
            30% {
              transform: scale(1.02, 1.0) translate(0, 8px);
            }
            50% {transform: scale(0.98, 1.05) translate(0, -8px);
            }
            70% {
              transform: scale(1.0, 0.9) translate(0, 5px);
            }
            100% {
              transform: scale(1.0, 1.0) translate(0, 0);
            }
            0%, 100% {
              opacity: 1;
            }
          }

        
      

アニメーションは、他にも色々使えます。グラデーション、カラー、大きさ、ホバー時、クリック時、など、練習していきましょう。