このページの本文へ

PROGRAMMING 古籏一浩の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.png fig2-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.png fig2-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つのエレメントだけのようです。スタイルシートクラスやタグ名を指定しても、該当する最初のエレメントしか対象になりません。

Web Professionalトップページバナー

この記事の編集者は以下の記事をオススメしています

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

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