【CSS】animationプロパティの基本

記事内に広告を含むことがあります。
こばゆた
こばゆた

animationプロパティを使うと以下のようなスライドショーのようなものが作れます

JOJO立ちするマッチョ
異世界なマッチョ
茶会のマッチョ
チャッピー
チャッピー

なんかマッチョな方がいっぱい!

きなこ
きなこ

トップページによくありがちなやつだね

こばゆた
こばゆた

最初はこれを作るのは少し難しいかもしれないけどアニメーションが理解できたらできるので頑張っていきましょう

スポンサーリンク

1.transitionとanimationの違い

チャッピー
チャッピー

動かすといえばtransitionもそうだったけどanimationとは何が違うの?

こばゆた
こばゆた

ではまずtransitionとanimationの違いから見ていこう

1-1.始まるタイミング

transition

ブラウザ読み込み後

transition

:hoverあり

transition

きっかけ(:hoverや:activeなど)がないと初めから移動や変形が終了しているためアニメーション感がない。

animation

ブラウザ読み込み後2秒後に開始

animation

:hoverあり

animation

きっかけがあればもちろん無くても好きなタイミングで動かせる。

1-2.途中にスタイルを入れられるか

transition

カーソルを乗せてください

transition

入れられない

animation

カーソルを乗せてください

animation

細かく設定できる

1-3.再生回数

transition

カーソルを乗せてください

transition

一回切り

animation

カーソルを乗せてください

animation

設定している数(1~無限)

1-4.戻り方

transition

カーソルを乗せてください

transition

逆再生で戻る

animation

カーソルを乗せてください

animation

初期値に戻る

他にもJavaScriptを使わなくてもできるようになるのでページに負担がかからないなどのメリットもあります。

きなこ
きなこ

アニメーションというだけあって細かい設定もできるという事だね

こばゆた
こばゆた

簡単なアニメーションなら”transition”、複雑なアニメーションなら”animation”という感じでそれぞれの利点を見極めて使い分けていきましょう

スポンサーリンク

2.アニメーションの作り方

アニメーションを作るには”@keyframes“とそれを呼び出す”animation-name“を準備します。

こばゆた
こばゆた

最初は以下のように簡単なアニメーションから作ってみましょう

カーソルを乗せてください

boxA

2-1.keyframesを作る

keyframesは開始から何パーセントの時点でどのようなアニメーションにするかを指定する事ができます。

基本的には0%を開始時、100%を終了時と考え、その間も細かく設定する事もできます。

@keyframes 名前{
  〇〇%{
    プロパティ名: 値;
  }
}

@から書き始める事に注意です。また名前にはclassやidのように好きな名前をつける事ができます。


keyframesの作り方

[ptimeline color=”yellow”]

  • STEP1
    @keyframesの名前をつけ、枠組みを作成する

    @keyframes translate{
       
    }

    名前はお好きに付けられますが紛らわしかったり、わかりにくいのは避けましょう。
    ここでは移動させるので”translate”としました


  • STEP2
    STEP1の時に作成した枠組みにタイミングを指定する

    @keyframes translate{
       0%{
    
      }
      100%{
    
      }
    }

    ここでは0%と100%を指定しました。


  • STEP3
    それぞれのタイミングの{ }内に任意の動きを指定する

    @keyframes translate{
       0%{
        transform: translateX(0px);
      }
      100%{
        transform: translateX(230px);
      }
    }

    ここでは100%の時点でX軸方向に230px移動するようにしています。


  • [/ptimeline]

    こばゆた
    こばゆた

    ここからは補足情報になります

    from to

    また0%と100%の時は”from”, “to”というキーワードでも指定できます。

    @keyframes translate2{
       from{
        transform: translateX(0px);
      }
      to{
        transform: translateX(230px); /*100%の時点でX軸方向に230px移動する*/
      }}

    カーソルを乗せてください

    boxB

    @keyframes translate{
       0%{
        transform: translateX(0px);
      }
      100%{
        transform: translateX(230px); /*100%の時点でX軸方向に230px移動する*/
      }
    }

    終了時のみを指定

    0%、つまり開始時の指定は省略することもできます。

    @keyframes translate{
      100%{
        transform: translateX(230px); /*100%の時点でX軸方向に230px移動する*/
      }
    }

    カーソルを乗せてください

    boxC

    2-2.animation-name

    animation-nameプロパティは”@keyframes”で付けた名前を指定することでアニメーションを呼び出せるようにするプロパティです。

    セレクター{
      animation-name: @keyframeで付けた名前;
    }

    指定を忘れるとアニメーションが動かないので注意です。

    またこの”@keyframes”の名前は使い回すこともできます。


    こばゆた
    こばゆた

    animation-nameプロパティに関してはこれだけです

    書き忘れだけには気を付けるくらいです

    チャッピー
    チャッピー

    これでアニメーションができたの?

    こばゆた
    こばゆた

    あとはanimationプロパティでいろいろと細かく指定していくだけだよ

    3.もっと細かく設定する

    先ほどのものですとtransitionとあまり変わりがないので”keyframes”をもう少し細かく設定します。

    カーソルを乗せてください

    boxD

    60%の地点にもイベントを追加しました。

    /*keyframesの設定*/
    @keyframes example{
      0%{
        transform: none;
      }
      60%{
        transform: translateX(200px) rotate(45deg); /*X軸方向に230px移動し、45度傾く*/
      }/*1.8秒後*/
      100%{
        transform: translateX(100px); /*X軸方向へ100pxの所へ移動し、傾きは戻る*/
        border-radius: 50%; /*円になる*/
        background-color: #ddd; /*背景色を#dddにする*/
      }/*3秒後*/
    }
    
    /*アニメーションの設定*/
    .box:hover{
      animation-name: example; /*keyframesの名前が"example"*/
      animation-duration: 3s; /*3秒間かけてアニメーションする*/
    }

    次回やりますがanimation-durationプロパティはtransition-durationプロパティと同じくアニメーションにかかる時間を指定できます。ここでは3秒に指定しています。

    60%ということは1.8秒(3秒×60%)の時にX軸方向に200px移動し、45度回転します。

    さらに100%の終了時にはX軸方向に100pxの位置に移動し、背景色が変わり、形も円になるような指定になっています。

    4.まとめ

    transitionとanimationの違い
    違い transition animation
    開始のタイミング 動かすにはきっかけが必要 好きなタイミングで動かせる
    途中にスタイルを入れられるか できない できる
    再生回数 一回 設定した回数(1~無限)
    戻り方 逆再生で戻る 初期値に戻る
    @keyframes
    • 基本は開始時のプロパティと終了時のプロパティを指定する
    @keyframes 名前{
      0%{
        プロパティ名: 値;
      }
      100%{
        プロパティ名: 値;
      }
    }
    • 間にもフレームを指定できる
    /*例*/
    @keyframes 名前{
      0%{
        プロパティ名: 値;
      }
      60%{
        プロパティ名: 値;
      }
      100%{
        プロパティ名: 値;
      }
    }
    • 0%と100%の時は”from”, “to”というキーワードに言い換えて指定できる
    @keyframes 名前{
       from{
        プロパティ名: 値;
      }
      to{
        プロパティ名: 値;
      }
    }
    • 0%の指定は省略し、終了時のみの指定もできる
    @keyframes 名前{
      100%{
        プロパティ名: 値;
      }
    }

    animation-name
    • @keyframesで作ったものを呼び出すプロパティで、指定しないと動かない
    セレクター{
      animation-name: @keyframeで付けた名前;
    }
    こばゆた
    こばゆた

    次回からアニメーションで使えるプロパティについてもっと詳しくやっていきます

    HTML/CSSをもっと学びたい方はこちらもオススメです!

    コメント