safari4 betaで実装されたCSS Animationを使ってみました。
こんにちは。橋本です。
さて、今日は先日公開されたsafari4 betaで実装されたCSS Animationを使ってみたいと思います。(今回のサンプルはsafari4 beta、もしくはwebkitのnightlyビルドを使ってご覧ください)
CSS Animationとは何かと言いますと、文字通りCSSを使ってAnimation効果を表現する技術です。
まずこちらをご覧ください。
Falling Leaves 'Using CSS Animations and Transforms
これはwebkitの公式blogで紹介されていたサンプルなんですが、この美しく舞う落葉のアニメーション効果は全てCSSで定義されています。
では実際にどのようにアニメーション効果を定義するかを見ていきたいと思います。
まず、以下のように、キーフレームを定義します。
キーフレームの定義は、「@-webkit-keyframes」+「アニメーション名」で行います。
キーフレームの中では、fromとtoという要素を用いて、アニメーションの始まりの状態と終わりの状態を定義します。
また、fromとtoの代わりに、「%」指定を用いて、経過時間毎の細かい変化を指定することもできます。
キーフレームで定義したアニメーションの状態については、一般的なcssのプロパティや「-webkit-transform」を用いた変化を指定出来る他、「animation-timing-function」という指定で、アニメーションの動きの速さの変化を定義することも出来ます。
これについては、ease、linear、ease-in、ease-out、ease-in-out、の四種類を既定値として指定出来る他、cubic-bezierという指定を用いて、独自の動きを定義することも出来ます。
animation-timing-functionについては、こちらのページが参考になります。
Cubic Bezier timing function
次に、定義したアニメーションを実際に使用する方法ですが、アニメーションを適用したい要素に対して、適用するアニメーション名や、オプションを指定していきます。
「-webkit-animation-name」は適用するアニメーションの名前です。
「-webkit-animation-name: sample1, sample2, sample3;」といった形で複数指定することも可能です。
「-webkit-animation-duration」はアニメーションを実行する時間です。
キーフレームで指定した「%」指定はは、ここで定義する時間に対する割合になります。
デフォルト値は「0」となっており、「0」の場合にはアニメーションはは実行されません。
「-webkit-animation-iteration-count」はアニメーションの実行回数です。「infinite」と指定すると、回数無制限に実行します。
「-webkit-animation-direction」は反復の有無です。
デフォルト値は「normal」です。「alternate」と指定することによって、fromからto(0%から100%)までアニメーションを実行した後、toからfromに対して、再度アニメーションを行うように出来ます。
「-webkit-animation-play-state」は実行状態です。「running」と指定することで、アニメーションを実行状態にし、「paused」と指定することで停止状態にすることができます。
javascriptを使ってアニメーションを制御するときに使用するのかもしれませんが、正直使い勝手がいまいち分かっていません(すみません)。
「-webkit-animation-delay」は実行までの待ち時間です。ここで指定した時間の経過後、アニメーションが実行されます。
以上をふまえて簡単にサンプルを作ってみました。
safari4 betaをお持ちの方は是非実行してみてください。
(一応iPhoneでもアニメーションを表示することは出来るのですが、少し挙動不信です。出来ればsafari4 betaを使って見ていただけたらと思います。)
サンプル
コードはこちらです。
javascriptと上手く組み合わせれば、さらに複雑で面白いアニメーション効果を作ることも出来ると思います。
皆さんも是非試してみてください。
さて、今日は先日公開されたsafari4 betaで実装されたCSS Animationを使ってみたいと思います。(今回のサンプルはsafari4 beta、もしくはwebkitのnightlyビルドを使ってご覧ください)
CSS Animationとは何かと言いますと、文字通りCSSを使ってAnimation効果を表現する技術です。
まずこちらをご覧ください。
Falling Leaves 'Using CSS Animations and Transforms
これはwebkitの公式blogで紹介されていたサンプルなんですが、この美しく舞う落葉のアニメーション効果は全てCSSで定義されています。
では実際にどのようにアニメーション効果を定義するかを見ていきたいと思います。
まず、以下のように、キーフレームを定義します。
キーフレームの定義は、「@-webkit-keyframes」+「アニメーション名」で行います。
- @-webkit-keyframes
sample1 { from { top: 0px; left: 0px; animation-timing-function: ease-out; -webkit-transform:rotate(-50deg); background-color: #ffffff; } to { top: 480px; left: 320px; animation-timing-function: ease-out; -webkit-transform:rotate(50deg); background-color: #000000; } - }
キーフレームの中では、fromとtoという要素を用いて、アニメーションの始まりの状態と終わりの状態を定義します。
また、fromとtoの代わりに、「%」指定を用いて、経過時間毎の細かい変化を指定することもできます。
- @-webkit-keyframes
sample2 { 0% { top: 0px; left: 0px; } 50% { top: 100px; left: 100px; } 100% { top: 200px; left: 200px; } - }
キーフレームで定義したアニメーションの状態については、一般的なcssのプロパティや「-webkit-transform」を用いた変化を指定出来る他、「animation-timing-function」という指定で、アニメーションの動きの速さの変化を定義することも出来ます。
これについては、ease、linear、ease-in、ease-out、ease-in-out、の四種類を既定値として指定出来る他、cubic-bezierという指定を用いて、独自の動きを定義することも出来ます。
animation-timing-functionについては、こちらのページが参考になります。
Cubic Bezier timing function
次に、定義したアニメーションを実際に使用する方法ですが、アニメーションを適用したい要素に対して、適用するアニメーション名や、オプションを指定していきます。
- div
{ -webkit-animation-name: sample; //アニメーション名 -webkit-animation-duration: 10s; //実行時間 -webkit-animation-iteration-count: 5; //実行回数 -webkit-animation-direction: alternate; //反復の有無 -webkit-animation-play-state: running; //実行状態 -webkit-animation-delay: 3s; //実行までの待ち時間 width: 100px; height: 100px; position: absolute; - }
「-webkit-animation-name」は適用するアニメーションの名前です。
「-webkit-animation-name: sample1, sample2, sample3;」といった形で複数指定することも可能です。
「-webkit-animation-duration」はアニメーションを実行する時間です。
キーフレームで指定した「%」指定はは、ここで定義する時間に対する割合になります。
デフォルト値は「0」となっており、「0」の場合にはアニメーションはは実行されません。
「-webkit-animation-iteration-count」はアニメーションの実行回数です。「infinite」と指定すると、回数無制限に実行します。
「-webkit-animation-direction」は反復の有無です。
デフォルト値は「normal」です。「alternate」と指定することによって、fromからto(0%から100%)までアニメーションを実行した後、toからfromに対して、再度アニメーションを行うように出来ます。
「-webkit-animation-play-state」は実行状態です。「running」と指定することで、アニメーションを実行状態にし、「paused」と指定することで停止状態にすることができます。
javascriptを使ってアニメーションを制御するときに使用するのかもしれませんが、正直使い勝手がいまいち分かっていません(すみません)。
「-webkit-animation-delay」は実行までの待ち時間です。ここで指定した時間の経過後、アニメーションが実行されます。
以上をふまえて簡単にサンプルを作ってみました。
safari4 betaをお持ちの方は是非実行してみてください。
(一応iPhoneでもアニメーションを表示することは出来るのですが、少し挙動不信です。出来ればsafari4 betaを使って見ていただけたらと思います。)
サンプル
コードはこちらです。
- <!DOCTYPE
html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - <html
xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja" dir="ltr"> <head> <meta http-equiv="Content-type" content="text/html; charset=utf-8"> <meta name="viewport" content="initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, width=device-width"> <title>shootingStar</title> <style type="text/css" media="screen"> @-webkit-keyframes fall{ from { top: -10px; } to { top: 400px; left: 300px; } } @-webkit-keyframes fadeout{ 0% { opacity: 0;} 25% { opacity: 1;} 70% { opacity: 0.1;} 100% { opacity: 0;} } @-webkit-keyframes rotate{ 0% { -webkit-transform: rotate(-180deg);} 100% { -webkit-transform: rotate(180deg);} } #main { background: #ffffff url(images/bg_machi.jpg); width: 320px; height: 480px; } #star > div { position: absolute; top: -50px; -webkit-animation-name: fall, fadeout, rotate; -webkit-animation-iteration-count: infinite; -webkit-animation-direction: normal; -webkit-animation-timing-function: ease-in; } .shooting-star { color: #ffff55; font-size: 0.5em; position: absolute; } #star1 { left: -10px; -webkit-animation-duration: 1.5s; -webkit-animation-delay: 5s; } #star2 { left: 30px; -webkit-animation-duration: 2s; -webkit-animation-delay: 2s; } #star3 { left: 80px; -webkit-animation-duration: 1s; -webkit-animation-delay: 4s; } #star4 { left: 150px; -webkit-animation-duration: 1.5s; } #star5 { left: 200px; -webkit-animation-duration: 2s; -webkit-animation-delay: 5s; } </style> </head> <body> <div id="main"> <div id='star'> <?php for ($i = 1; $i < 5; $i++): ?> <div id="star<?php echo $i ?>" class="shooting-star">★</div> <?php endfor; ?> </div> </div> </body> - </html>
javascriptと上手く組み合わせれば、さらに複雑で面白いアニメーション効果を作ることも出来ると思います。
皆さんも是非試してみてください。
トラックバックURI
最近の記事
システム開発エンジニア募集! [2012年02月03日 : 小林有佳]
OpenVPNで細々便利な設定 [2012年01月31日 : 門脇優児]
【iOS】Viewの開発・デバッグに役立つ色々 [2012年01月23日 : 中川善樹]
PHPDocumentorの利用方法まとめ [2012年01月19日 : 笹亀弘]
Google Chart Toolsを使ってサイトマップを描こう! [2011年12月21日 : 志田仁美]
stumpwm設定v2 [2011年12月19日 : 門脇優児]
Mashup Awards 7の授賞式が行われました [2011年12月16日 : 中川善樹]
社員旅行に行きました [2011年12月12日 : 大橋寛子]
iCloud風のアイコンを作成する(Fireworks) [2011年12月07日 : 和田記光]
iScroll4でネイティブに近いスマホ向けHTMLページを作成する [2011年12月02日 : 松田惇]













コメントフォーム