ウィザード・コード

ProtoFaderで、バナーをクロスフェードさせる



左上: 通常のクロスフェード 右上: blindエフェクト
二段目左: slideエフェクト 二段目右: dropoutエフェクト
三段目左: slideエフェクトにspringのtransitionを追加


 やや今さらという観がありますがクロスフェードのスクリプトを紹介します。クロスフェード関係のものとしてはCrossFader などがありますが、今回のスクリプトはPrototypeとscript.aculo.us使用を前提としています。その代わり、フェード以外にさまざまな 視覚効果や遷移方法(transition)を選択できます。また、HTMLへの記述は最小限にとどまるよう工夫しています。具体的には 次のようなタグ要素を書くだけで済みます。

 手順としてはまず、例によってPrototypescript.aculo.us をscriptタグに記述します。

 次に下記のCSSをstyleタグ内に追加するか、外部CSSファイルに書きます。

 そして、バナーの設定を行います。JavaScriptに記述する格好になるので、body終了タグの直前に追加するか、CSSのように 外部ファイルを作ります。JSON形式で書かれており、まずimageSizeプロパティに[バナーの幅, バナーの高さ]を設定。そして、 campaignプロパティですが、これは配列になっており、バナーの数だけここにJSON形式のオブジェクトを追加します。 それぞれ、imgプロパティにバナー画像のURLを入れ、URLプロパティ(ややこしいですが)にリンク先のURLを入れます。 また、altプロパティには、マウスオーバーしたときに表示するメッセージを入力します。

 複数のバナーを一つの画像にまとめた場合も考慮して、次にように設定することができます。ただし、下の画像のようにバナー画像を「縦に」 並べた画像を使用することが前提になります。

 上のスクリプトと違う点は、imageURLという新たなプロパティが追加されている点で、ここにバナーを連結した画像を設定します。 一方でcampaignプロパティですが、ここではimgプロパティが不要になります。

 バナーのエフェクトを開始するには、下記のようにnew演算子でProtoFaderを呼び出します。引数にはまず、 バナーを設定した要素(ID名でokです)、先ほど設定したバナー用のデータを格納した変数を渡します。最低限これだけで大丈夫です。 ただし、もっと細かい設定をしたい場合は、delayに各バナーの表示時間、durationにエフェクトの持続時間、effectにエフェクト名 ("appear", "blind", "slide", "dropout"の四種類から選びます。"appear"の場合は省略可)、そして必要であれば transitionを追加します(省略するとデフォルトのsinoidalに。"blind", "slide"エフェクトを使用する場合は、transitionに "spring"を選ぶと面白いエフェクトになります)。

下に具体的な記述例を挙げています。

 HTML内にバナーを記述する際は、DIVタグを使用しその中にID属性と"pf_content"というクラス名を追加します。 バナーの設定データは複数作ることができますが、HTMLに記述するバナー用のタグにはそれぞれ固有のID名が必要です。

 そして最後に(順番はどうでもいいのですが)クロスフェードのスクリプトを追加します。このページで使用しているクロスフェードは ソースを見れば確認できますので、是非ご参考にしてください。