スキップしてメイン コンテンツに移動

CSS3でアニメーションを作ってみよう(理論編)

こんにちは、クリエイティブフレークです。



Windows XPのサポートが終了してから、国内のIE10のシェア率が急激に高まり、Chromeも急伸しています。

これまでどうしてもIEの古いバージョンのユーザーのことを考慮すると、完全CSS3はまだ先かなと思うところでしたが、そろそろ勉強し始めどきかもしれません。

今回はCSS3だけで動くアニメーションの簡単なサンプルを。

【デモ : DEMO】CSS3だけでアニメーション



そもそも、アニメーションといえば、
・gif(Photoshopなどでタイムラインでコマ送り。あくまで画像なのでパラパラ漫画と同じ理論。)
・Flash(タイムラインもしくはプログラミングで制御。見るにはFlash Playerのインストールが必要。)
・jQuery(JavaScript言語を使用して動的に制御。)

時代ごとに移り変わってきましたね。

では、こんなにアニメーションは存在するのに、なんでCSS3を使いたがるの?

・gifの欠点
gifアニメーションの欠点は細かく動かすとファイル容量が大きくなります。
また、滑らかな動きには向いていません。

・Flashの欠点
FlashはFlash Playerが必要なので、インストールしていないPCや、スマートフォンには対応していません。

・jQueryの欠点
jQueryはプログラミング可能なので、細かく動作を指示できますが、jQueryを使用する場合、JavaScript単体とjQuery本体の組み合わせで、ファイルは大きくなります。



ここで登場するのがCSS3。以前ならマークアップ言語で動作の指示ができるなんて思ってもみませんでした。

今回の目標
・CSSで丸や四角などの図形を描く
・CSSで回転させる
・CSSでフェードさせる



【デモ : DEMO】CSS3だけでアニメーション


▲こんなかんじ

今回のデモのソースコードはすべてHTML内に記述してあります。

ソースコードが長いので、ここでは解説だけを記載します。



サンプルソースコードの解説


div {
  position: absolute !important;
  top: calc(50% - 100px);
  left: calc(50% - 100px);
  width: 200px;
  height: 200px;
  background-color: #e94c3d;
  -webkit-animation: transform 4s .5s infinite cubic-bezier(1,0.15,.29,1.21) alternate;
  -moz-animation: transform 4s .5s infinite cubic-bezier(1,0.15,.29,1.21) alternate;
  -ms-animation: transform 4s .5s infinite cubic-bezier(1,0.15,.29,1.21) alternate;
  -o-animation: transform 4s .5s infinite cubic-bezier(1,0.15,.29,1.21) alternate;
  animation: transform 4s .5s infinite cubic-bezier(1,0.15,.29,1.21) alternate;
}


ここでdivタグで図形を描きます。
width: 200px と height: 200px の部分が、正方形を表します。
背景色(background-color)お好きな色を。

position: absolute !important と top, left は、見やすくするために画面の上下中央に配置しています。

-webkit-animation は、Chromeでの動作指示
-moz-animation は、FireFoxでの動作指示
-ms-animation は、IEでの動作指示
-o-animation は、Operaでの動作指示、そして
animation は、ブラウザ指定なしでの動作指示を意味し、animation がアニメーションです。

animation: (関数名 持続時間 ディレイ時間 繰り返し回数 動き方 逆再生)

このdivの場合は、「transformという関数(別に指示)で、開始から0.5秒だけ遅延させ、4秒かけて(1,0.15,.29,1.21)という動き方で逆再生しながら無限にアニメーションさせる。」と翻訳できます。



次はChromeの指示ですが、

@-webkit-keyframes transform {
  0%  {
    border-radius:0 0 0 0;
    background:#e94c3d;
    -webkit-transform: rotate(0deg);
    -moz-transform: rotate(0deg);
    -ms-transform: rotate(0deg);
    -o-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  25%  {
    border-radius:50% 0 0 0;
    background:#f2c42d;
    -webkit-transform: rotate(45deg);
    -moz-transform: rotate(45deg);
    -ms-transform: rotate(45deg);
    -o-transform: rotate(45deg);
    transform: rotate(45deg);
  }
  50%  {
    border-radius:50% 50% 0 0;
    background:#1bbc9b;
    -webkit-transform: rotate(90deg);
    -moz-transform: rotate(90deg);
    -ms-transform: rotate(90deg);
    -o-transform: rotate(90deg);
    transform: rotate(90deg);
  }
  75%  { 
    border-radius:50% 50% 50% 0;
    background:#2d3d50;
    -webkit-transform: rotate(135deg);
    -moz-transform: rotate(135deg);
    -ms-transform: rotate(135deg);
    -o-transform: rotate(135deg);
    transform: rotate(135deg);
  }
  100% {  
    border-radius:50%;
    background:#9b58b5;
    -webkit-transform: rotate(180deg);
    -moz-transform: rotate(180deg);
    -ms-transform: rotate(180deg);
    -o-transform: rotate(180deg);
    transform: rotate(180deg);
  }
}


0%から100%まで、25%刻みでどんな色、形になっているかを指示しています。

たとえば0%のときは、
border-radius の値がすべて0なので、正方形ですね。
背景色はお好きな色を、
そして先ほどの関数の説明、rotate(0deg) は、0度で回転した状態を意味します。つまり、何も回転してないってことですね。

もう一例、25%のときは、 border-radius が1番目の値だけ50%なので、左上の角が丸くなって、残りは角のままという状態です。

さらに、rotate(45deg) から、45度だけ回転をしている状態です。



それぞれの時間の状態になるように、先にdivで定義したような動き方をしなさい、という指示ですね。



そして、Chrome、FireFox、IE、Operaと同様にCSSを追加し、最終的にすべてのブラウザに対応できるように、@keyframes transform {} を記述しましょう。



見ての通りですが、回転角度は rotete(数値deg)です。

参考までに、cubic-bezier(1,0.15,.29,1.21) という数字をどうやって出すか、ですが、http://matthewlein.com/ceaser/で、動かしたい種類を選ぶだけで数値を表示してくれます。

※今回使用した、「transform」という関数名は、好きな名前に変更できます。




Written by Creative Flake

コメント

このブログの人気の投稿

ブログ移転のお知らせ

いつもご覧いただきありがとうございます。 当ブログは下記URLへと引っ越しました。 http://blog2.creativeflake.com/ 今後はこちらをご覧ください!!

CSSでドット絵を描いてみよう

ドット絵(ピクセルアート)は1980年代ごろのパソコンやゲーム機で、最もよく使われた画像の表現方法でしたが、パソコン等の高解像度化にともなって、ドット絵を使われることはほとんどなくなりました。 以前は解像度が低かったため、写真や画像を今のようにきれいに表示することができなかったので、ドットで描画することが主流でした。目で見てピクセルだと分かる範囲がドット絵と呼ぶそうです。 今だからこそ逆に斬新、かわいいと思うこともあるのですが、せっかくなのでドット絵をCSSだけで描画したいと思います。 もちろん、こんなチョコボを描くことも余裕でできます。 ドット絵に使うCSS HTMLやCSSを使って描く表現方法はさまざま考えられますが、今回は「box-shadow」のみで描いていきたいと思います。 box-shadowでドットを描く HTML <div></div> まずHTMLには空のdivを用意してあげます。これだけでHTMLは完成です。 CSS div { background: transparent; width: 10px; height: 10px; box-shadow: 0 10px red, 10px 20px blue, 20px 10px green; } CSSは基点<(0, 0)の場所>をtransparent(透明)とし、基本となるドットの大きさを縦、横ともに10pxずつと設定します。 そのときに、基点から下へ10pxの箇所に赤いドットを、右へ10px、下へ20pxの箇所に青いドットを、右へ20px、下へ10pxの箇所に緑のドットを描画します。 ↓↓↓こんな感じで表示されます 本来box-shadow(ボックスシャドウ)は指定した要素に立体っぽく影をつけるCSSなのですが、ぼかし具合を入力しないことでゼロ、つまりただの直線として認識されます。 ざくざく作っていこう こんな感じで、ドット絵を書いていくには元画像を準備し、ピクセル単位で描画していきます。 チョコボを描く(HTML) <div id="chocobo...

Googleの検索結果から情報を削除する方法(2015年12月現在)

削除できるもの 確実に削除できるコンテンツとしては、「法律に基づく削除」で具体的には次の2点です。 ・児童ポルノ ・デジタルミレニアム著作権法(音楽、動画、ソフトウェアなどの無断コピー、海賊版など)に抵触するもの 削除できる可能性が高いもの ・個人情報 特に以下のもの ○国が発行する識別番号(マイナンバーなど) ○銀行口座番号 ○クレジット カード番号 ○署名(サイン)の画像 ○当人の承諾なしにアップロードまたは共有された、ヌードや露骨な性描写を含む画像 個人情報でも削除の対象とならないものとして ○生年月日 ○住所 ○電話番号 それらの情報を利用して、金融取引に使えたり、身元詐称に使えたりするものは削除の対象です。 また公的な情報は削除の対象になりません。 コンテンツやページを削除する方法 まずはサイトの管理者に連絡し、削除依頼することをGoogleは推奨しています。 その方法としては、 1.当該サイトの「お問い合わせ」や連絡先メールアドレスがあればそこから連絡をする 2.上記1のお問い合わせなどの連絡先がない場合、whoisを利用して、ドメインの所有者の連絡先を確認する 3.上記2の直接の連絡先がない場合、サーバーホスティング会社に問い合わせる なぜサイト管理者に連絡するのか? 仮にGoogleが検索結果から情報を削除したとしても、そのWebページやコンテンツは残ったままです。 URLもそのまま存在するわけなので、直接URLにアクセスするとページは見える状態にあります。 クレジット番号やマイナンバーなどの情報が公開されている場合 クレジット番号やマイナンバーなどの個人情報が含まれる場合は、できるかぎりサイト管理者に連絡したうえで、Googleにも確認してください。 https://support.google.com/websearch/troubleshooter/3111061 Written by Creative Flake