多機能画像ローダー:ImageLoader Utility

2007/10/12 19:47

ImageLoader Utilityは、名前の通り画像をロードするコンポーネントだ。これは実験的な(experimental)リリースと位置づけられている。そのため、今後は仕様が大きく変更されるおそれがあり、まだ実用段階とはいえない。しかし、画像を表示させるにあたって便利に使えそうな機能が揃っており、今後の発展が楽しみなコンポーネントでもある。

画像のグループ化

 画像をグループ化しておくと、そのグループに属する画像に対して同時に処理を行うことが可能になる。ここでは、2つの画像のどちらかにマウスカーソルをかざすと両方の画像が表示される例を示す。

 マウスカーソルをかざす前後の画面を図3、図4に示す。画像の領域はリスト6とリスト7で設定している。

 注目すべきはリスト7の「!important」だ。本来CSSの設定はHTML内のstyle属性のものが優先されるが、これはその優先順位を逆転させるものだ。そのため、style属性に背景画像が設定されているのも関わらず、図3では画像が表示されていない。

図3 マウスカーソルをかざす前
図4 マウスカーソルをかざした後

リスト6 画像の表示領域(HTML)

<div id="image-group-example3">
  どちらかにマウスをかざして!
  <div class="none-class" style="background-image:url('図4左の画像のURL');">ひだり</div>
  <div class="none-class" style="background-image:url('図4右の画像のURL');">みぎ</div>
</div>

リスト7 リスト6に対するCSS設定

#image-group-example3 div {
  width  : 240px;
  height : 320px;
  border : 1px solid #000000;
  margin : 0.5em;
  float  : left;
  color  : #DDDDDD;
  font-weight : bold;
  font-size   : 30pt;
}
.none-class {
  background : none !important;  /* style属性よりもこちらを優先 */
}

 その画像を表示させるには、リスト8のような設定が必要だ。グループ化は、画像を表示させるタグよりも上の階層にあたるタグに対して設定する。リスト6では<div id="image-group-example3">がそれにあたる。

 同じ効果を期待する領域に対しては、HTMLのclass属性で同じの値を指定しておき、その値をclassNameプロパティにも指定しておくことが、この設定でのポイントだ。

リスト8 画像表示の設定(JavaScript)

// このグループの画像にマウスカーソルをかざしたら
// それに属する画像をすべて表示する(時間制限なし)
var img3 = new YAHOO.util.ImageLoader.group( 'image-group-example3', 'mouseover', -1 );
// 表示の際はstyle属性の内容を画面に反映する
img3.className = 'none-class';

 このほか、ウィンドウのサイズ変更や画面のスクロールに連動させることもできるので、オンラインデモを参考に、さまざまなテクニックを研究していただきたい。

 次回はアプリケーションをテストするテストケースをYUI Test Utilityを取り上げる。アドインなしでJavaScriptのアプリケーションのテストができるのは、さまざまなWebブラウザに対応する必要がある場合に便利だろう。

記事の感想やご意見をコメントでお寄せください(CNET_IDログインが必要です)
ログイン パスワードを忘れた方  |  新規登録
  • 新着記事
  • 人気記事
  • 特集
  • ブログ
  • 読者投票
    今、使っているマシンのOSは?

    投票受付期間:2008年6月27日 〜 2008年7月11日
  • » 投票しないで結果だけ見る