こんにちは、「ふ」です。
CSSアニメーションのトップページです。ここではCSSアニメーションの概要と、詳細記事へのリンクを貼っていきます。初めての方でも順に学んでいける構成になっていますので、参考にしてください。
記事一覧は右上↗️のメニューボタンから、ご覧ください。
順番に読んでいけば、CSSアニメーション知識のすべてが得られます 🎶
CSSアニメーションは、プロパティの変化を連続的に描画してくれるものです。
<img class = "fade" src = "sample.svg">
■ sample.svg
画像「sample.svg」を用意しました。class名を「fade」としています。
たとえば。
この画像の不透明度を変化させて、フェードインするアニメーションを実装したいとき。
「「3/*キーフレーム*/」」
@keyframes fade {
0% {opacity:0;}
100% {opacity:1;}
}
「「3/*animation関連のプロパティ*/」」
.fade {
animation-name:fade;
animation-duration:3s;
animation-iteration-count:infinite;
}
要素に対して、キーフレーム及びanimationに関するプロパティを指定します。
するとブラウザは、opacity(不透明度)0〜1の連続変化を描画してくれます。
CSSアニメーションは、連続変化させられるプロパティすべてに適用することが可能です。またCSSだけで実装が可能なので、コーディングさえできれば誰でも手軽に始めることができますよ。
当コーナーで実装方法を学んで、おしゃれなサイト作りに役立ててください。
〽️ シンプルなものから始めよう。
初めての方はこちら⬆︎。CSSアニメーションの基本形を作ってみましょう。
それでは、具体的な実装方法についてみていきましょう。CSSアニメーションの実装に必要な指定は、「キーフレーム」と「アニメーション関連のプロパティ」の2つ。
先ほどのコードをもう1度みてみます。
@keyframes fade {
0% {opacity:0;}
100% {opacity:1;}
}
コードの前半に記述しているのが、キーフレームです。
キーフレームは、アニメーションの各地点におけるCSSプロパティの状態を指定します。
先ほどのフェードインアニメーションでは「完全な透明」から「完全な不透明」に変化させるものでした。そのため開始(0%)ではopacityを0、終了(100%)ではopacityを1と指定しています。
サンプルでは0%と100%のみの指定ですが、もっと細かい変化を指定することも可能です。
キーフレームには、アニメーションの対象要素と紐付けるための名前が必要になってきます。
はじめのところで「@keyframes fade」とあります。このキーフレームの名前を「fade」と名付けた、ということです。
〽️ アニメーションのシナリオを作る。
キーフレームについては、⬆︎の記事で詳しく紹介しています。
.fade {
animation-name:fade;
animation-duration:3s;
animation-iteration-count:infinite;
}
コード後半の画像要素に直接指定しているのが、アニメーションの時間や繰り返しなどに対するプロパティです。
1つ目のanimation-nameというプロパティは、紐づけるキーフレームの名前を指定します。先ほどキーフレームの名前を「fade」としていました。animation-nameの値も「fade」とすることで、キーフレームfadeの内容にしたがって要素をアニメーションさせることができるようになります。
その他のanimation関連プロパティを使って、時間や再生方向などの指定を行います。
プロパティには以下のものがあります。
animation-name:「「3〇〇」」;「「1 ..@1@」」
animation-duration:「「3〇〇s」」; 「「1..@2@」」
animation-iteration-count:「「3〇〇」」; 「「1..@3@」」
animation-delay:「「3〇〇s」」; 「「1..@4@」」
animation-timing-function:「「3〇〇」」; 「「1..@5@」」
animation-direciton:「「3〇〇」」; 「「1..@6@」」
animation-fill-mode:「「3〇〇」」; 「「1..@7@」」
animation-play-state:「「3〇〇」」; 「「1..@8@」」
animation:「「3〇〇 〇〇 〇〇」」; 「「1..@9@」」
@1@ animation-name
紐づけるキーフレームを指定します。
@2@ animation-duration
アニメーション1回あたりの所要時間を指定。
@3@ animation-iteration-count
アニメーションの繰り返し回数を指定します。
@4@ animation-delay
アニメーションの開始に時間差をつけたい場合、このプロパティで指定します。
〽️ アニメーションの時間差攻撃。
@5@ animation-timing-function
アニメーションの進捗具合を指定します。これにより「ゆっくり始まり、急速に終わる」などの変化をつけることが可能です。
値にはあらかじめ用意されている関数のほかに、コマ送りアニメーションのためのsteps( )や任意の進捗を指定できるcubic-bezierなどがあります。
〽️ 進捗具合をコントロール。
〽️ 進捗を自由に指定。
〽️ タイムラプスは、これ。
@6@ animation-direction
アニメーションの再生方向を指定します。順再生/逆再生のほかにもalternate(順再生と逆再生を交互に繰り返す)を指定することもできます。
〽️ 繰り返しにも使える。
@7@ animation-fill-mode
アニメーション終了時の状態を指定します。完了時、規定の(アニメーションが始まる前の)状態にもどすのか、終了時の状態を保つのか、などを選択することができます。
〽️ 終わったままにするか、元に戻すか。
@8@ animation-play-state
アニメーションの再生/停止状況を指定します。クリックなど、何らかのユーザのアクションに応じて切り替えるのが一般的です。
〽️ 再生/停止のコントロール。
@9@ animationプロパティは、@1@〜@8@のプロパティを一括で指定できるショートハンドです。
〽️ シンプルなものから始めよう。
ここまで紹介してきたのは、CSSのキーフレームアニメーションと呼ばれているものです。CSSにはtransitonという、もう1つのアニメーションが用意されています。
多様なプロパティの変化が実装できるキーフレームアニメーションに対し、transitionアニメーションはキーフレームを持たず、単一の変化しか扱うことができません。
そのかわり実装がとても簡単です。
ユーザのアクションに反応させてちょこっとだけアニメーションさせる、などといったケースに向いています。
<button id = "btn"> button </button>
ボタンを1つ作りました。
擬似クラスhoverを使って、マウスカーソルが上に乗ったときに背景色が変化するようにします。
#btn:hover { background-color:coral; }
要素の上にマウスカーソルを乗せる(タッチデバイスの場合はタップ)すると、背景色が変化します。
今はボタンの背景色は一瞬で切り替わるようになっています。
ここにtransitionを加えることで、変化をアニメーションさせることができます。
#btn { transition-duration:1s; }
transition-duration(変化に掛かる時間)を1秒に指定しました。
こちらが実装後のものです。
要素にカーソルを乗せる(タップする)と、1秒間かけてボタンの背景色が変化します。
transitionは手軽に実装できるので、方法を学んでおきましょう。
transitionアニメーションに関する記事はこちら⬇︎。
〽️ 基本形を学ぼう。
〽️ プロパティと一括指定。
〽️ 4つのパターンで検証。
〽️ 複数セットも簡単。
transformは、要素の移動/回転/傾斜/拡大縮小という4種類の変形を可能にするプロパティです。
transform:rotate(20deg) 「「1..@1@」」 transform:scale(1.5) 「「1..@2@」」 transform:translate(50%) 「「1..@3@」」 transform:skew(10deg) 「「1..@4@」」
4種類の変形。
@1@ rotate:回転
@2@ scale:拡大/縮小
@3@ translate:移動
@4@ skew:傾斜
これらを組み合わせることで、モーショングラフィックさながらのアニメーションを作成することが可能です。
よく見かける「ふわふわ」アニメーションや「ぽよん」としたバウンドアニメーションにも、transformプロパティが使われています。
transformのtranslate(移動)を使ったふわふわアニメーションの例⬆︎です。
<img id = "kumo" src = "kumo.svg">
#kumo { 「「3/*参照するキーフレーム*/」」 animation-name:kumo; 「「3/*1回の所要時間*/」」 animation-duration:0.8s; 「「3/*進捗の度合い*/」」 animation-timing-function:linear; 「「3/*再生方向を交互に*/」」 animation-direction:alternate; 「「3/*繰り返し:無限*/」」 animation-iteration-count:infinite; } 「「3/*キーフレーム*/」」 @keyframes kumo { 0% {transform:translateY(0%);} 100% {transform:translateY(-4%);} }
「translateY」というのはtranslateの一種で、Y(垂直)方向に特化した移動を指定します。
transformはCSSアニメーションに欠かせないプロパティです。各内容について掘り下げた記事を参考にしてください。
〽️ transformで、できること。
〽️ x/y/z方向のいづれにもOK。
〽️ 要素の反転もできる。
〽️ エンドレスも可能。
〽️ xy方向に要素が倒れます。
〽️ 5つの法則が存在します。。
transformの各値は組み合わせることもできます。⬇︎のコードでは移動であるtranslateと、拡大縮小であるscaleを同時にアニメーションさせています。
またtransform-originというプロパティは「変形の基準点」を指定します。コードでは「bottom」と、基準を要素の下端に設定しています。
以下のサンプルは、transformのscale(拡大縮小)と、translate(移動)を組み合わせたものです。また変形の基準点を「bottom(要素の下端)」とすることで、地面にバウンドする様子を表現しています。
<img id = "fu" src = "fu.svg">
@keyframes fu { from { transform:「「1translateY(-50%) scale(0.95,1)」」; } to { transform:「「1translateY(0%) scale(1,0.9)」」; } } #fu { 「「3/*変形の基準点を指定*/」」 transform-origin:bottom; animation-name:fu; animation-duration:1s; animation-timing-function:ease-in; animation-direction:alternate; animation-iteration-count:infinite; }
こんな「ポヨンとはねる」アニメーションも、youtubeなどでよく見かけますよね。
〽️ 「変形の基準」とは?
〽️ 掛け合わせると動きはどーなる?
腕試し用のページも、用意しました。
これらのテストは、カンニングを大いに推奨します。自分で調べながら、課題を完成させてみてください。
🔸 キーフレームアニメーションの基礎を学んだら、挑戦してみましょう⬇︎
〽️ 基本編を終えたらチャレンジしよう。
🔸 transitionとtransformに関する、腕試しです。⬇︎
〽️ transform/transitionのスキル。
簡単にwebページに動きをつけることのできる、CSSアニメーション。
このサイトでしっかり学んで、役立ててください。
質問・要望などあれば、ページトップにあるtwitterや問い合わせページからご連絡くださいね。ではまた〜 🎵
ベクターグラフィック、web、ガジェットなど。役立つ情報や観ていてたのしいページを書いていきたいと思います。