このページの本文へ

  • twitterでつぶやく
  • はてなブックマークに登録
  • del.icio.usに登録
  • livedoorクリップに登録
  • Buzzurlに登録
  • StumbleUponに登録
  • Google Bookmarksに登録
  • Facebookでシェア
  • Yahoo!ブックマークに登録
  • お気に入りに登録
  • 本文印刷

古籏一浩のJavaScriptラボ ― 第16回

Yahoo! UI Library 3で驚きのアニメーションを作成

2009年10月20日 11時00分更新

文● 古籏一浩


画像をフェードインで表示するアニメーション

 もっとも簡単なアニメーションとして、画像の不透明度を徐々に変化させるフェードイン効果を試してみましょう。HTMLは以下のようにimgタグを用意し「myPhoto」というID名を設定しておきます。


<img src="photo/1.jpg" width="300" height="169" id="myPhoto">


 不透明度を変化させるアニメーションは、ページ内容が読み込まれた後(loadイベントが発生した後)に処理を開始します。loadイベントについては前回の記事で説明していますので参照してください(関連記事)。

 アニメーション処理は、new Y.Anim()としてアニメーションのためのオブジェクト(インスタンス)を生成し、run()メソッドを呼び出します。このとき、どのエレメントを、どのようにアニメーションさせるかを指定する必要があります。

 アニメーションさせるエレメントは、nodeに指定します。指定方法はCSSのセレクターと同じです(*1)。先ほどimgタグに「myPhoto」というID名を割り当てたので、node: '#myPhoto'と指定します。

 どのようにアニメーションさせるかは、from(アニメーションの開始値)とto(終了値)にそれぞれプロパティ名と値を指定します。不透明度はopacityプロパティで、値は0が完全な透明、1が完全な不透明です。fromを省略すると現在の状態がアニメーションの開始値になります。

 ここまでをまとめたものがサンプル01です。ページが読み込まれると透明から不透明に徐々に画像が変化していきます。

fig2-1.pngfig2-2.png
サンプル01の実行結果。ページが読み込まれると画像の不透明度が変化していく

●サンプル01(HTML)


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>Sample</title>
<link rel="stylesheet" href="css/main.css" type="text/css" media="all">
<script type="text/javascript" src="build/yui/yui.js"></script>
<script type="text/javascript" src="js/YUI_startupanime.js"></script>
</head>
<body>
<h1>YUIアニメーションサンプル</h1>
<div>
<img src="photo/1.jpg" width="300" height="169" id="myPhoto">
</div>
</body>
</html>


●サンプル01(スクリプト=YUI_startupanime.js)


YUI().use('anim', function(Y){
    Y.on('load', function(){
        (new Y.Anim({
            node: '#myPhoto',
            from : { opacity : 0.0 },
            to   : { opacity : 1.0 }
        })).run();
    });
});


 アニメーションの時間(不透明度が変化する時間)を指定したいときは、durationに秒数を指定します(ミリ秒ではない点に注意)。duration : 5とすると、5秒かけてアニメーションします(サンプル02)。

fig2-3.pngfig2-4.png
サンプル02の実行結果。5秒かけてアニメーションする

●サンプル02(スクリプト=YUI_startupanime.js)


YUI().use('anim', function(Y){
    Y.on('load', function(){
        (new Y.Anim({
            node: '#myPhoto',
            duration : 5.0,
            from : { opacity : 0.0 },
            to   : { opacity : 1.0 }
        })).run();
    });
});

※HTML部分はサンプル01と同じです



*1 ただし、処理できるのは1つのエレメントだけのようです。スタイルシートクラスやタグ名を指定しても、該当する最初のエレメントしか対象になりません。

この連載の記事

ASCII.jp会員サービス 週刊Web Professional登録

Webディレクター江口明日香が行く

みんなが買ってる最新アイテムはコレだ!

VOCALOID3 スターターIA ARIA ON THE PLANETES

VOCALOID3 スターターIA ARIA ON THE PLANETES

ヤマハ

17,745円〜

24人が購入

Google上位表示 64の法則 (WEB PROFESSIONAL)

Google上位表示 64の法則 (WEB PROFESSIONAL)

アスキー・メディアワークス

2,499円〜

72人が購入

標準HTML5タグリファレンス (WEB PROFESSIONAL)

標準HTML5タグリファレンス (WEB PROFESSIONAL)

アスキー・メディアワークス

2,205円〜

59人が購入

Speck MacBook Air 13型 See Thru - Clear SPK-MBA13-SEE-CLR

Speck MacBook Air 13型 See Thru - Clear SPK-MBA13-SEE-CLR

スペックコンピュータ

4,262円〜

23人が購入

jQuery Mobile スマートフォンサイト デザイン入門 (WEB PROFESSIONAL)

jQuery Mobile スマートフォンサイト デザイン入門 (WEB PROFESSIONAL)

アスキー・メディアワークス

2,499円〜

40人が購入

メモリーカード 32GB (PCH-Z321J)

メモリーカード 32GB (PCH-Z321J)

ソニー・コンピュータエンタテインメント

7,772円〜

9人が購入

iPhone 4S/4 防指紋性・高光沢機能性フィルム PRO GUARD AF for iPhone 4S/4 / PGAF-IPH4

iPhone 4S/4 防指紋性・高光沢機能性フィルム PRO GUARD AF for iPhone 4S/4 / PGAF-IPH4

マイクロソリューション Micro Solution Inc.

61人が購入

Amazon.co.jp