Webデザイン最新トレンド ~イマドキUIのつくりかた

第4回 画像をきれいに見せるギャラリーのつくりかた

この記事を読むのに必要な時間:およそ 4 分

lightbox系ライブラリなら手軽で更新しやすい

「画像を綺麗に見せたい」とクライアントから言われたときに,どうしていますか? 今回はギャラリーの作り方を紹介します。

ギャラリーを作る場合にはよくFlashが使われます。しかし,Flashを使うと更新の際にオーサリングの手間がかかったり,ActionScriptで特定のフォルダの画像を順番に読むものを作ると,それなりに工数がかかったりします。

そんな問題を解決できるのが,lightbox系のライブラリを使う方法です。

lightboxとは,元々Lokesh Dhakar氏によって作られたJavaScriptのライブラリのことです※1)⁠同ライブラリがきっかけで,JavaScriptを使って画像をオーバーレイ表示する効果が「lightbox効果」と言われるようになりました。

※1
現在はバージョン2になっています。

現在では,背景がグレーアウトするタイプや,表示されるときのアニメーションが独特なものなど,たくさんのlightbox系スクリプトがあります。

JavaScriptを読み込み,画像にクラスを指定するだけでインタラクティブな動きを手軽に実現できるので,とても便利です。しかも,画像ファイルのネーミングルールを決めておけば,特定のフォルダに画像を追加することでギャラリーの画像を追加することができるため更新性が高く,クライアントに納品する際にも重宝します。

Flashにはない3つの問題

ただ,Flashと違って,3つのことに気をつける必要があります。

1つ目は,ライブラリの動きはカスタマイズが用意でないこと。

JavaScriptを1から組める人なら別ですが,ライブラリはある程度動きや表示のされ方が決まっています。そのため,提案段階でデモを見せるなどして,あとから動きを調整することは難しいことを共有しておく必要があります。

2つ目は,ブラウザでの動作確認状態を知っておくこと。

動きの気持ちいいライブラリを見つけたと思っても,IE6で動かないものもたくさんあります。⁠後から気づいて,別のものを探さなくてはいけなくなった!」といった状況にならないように,実装前に確認しておきましょう。

最後はライセンスの問題です。

画像を表示する際,クレジット表記とリンクが必要になることがあります。JavaScriptライブラリの場合,ソース中のライセンス表記を残しておけば商用でも利用できることが多いのですが,中には商用で使えないものもあります。きちんと確認しておきましょう。

動きの気持ちいい「prettyPhoto」

lightbox系スクリプトの中には,画像1枚だけではなく,複数の画像をギャラリーとして見せられたり,FlashやYouTubeのコンテンツを読み込めたり,外部サイトをiframeで読み込めるスクリプトがたくさんあります。

今回ご紹介する「prettyPhoto」は,動きがスムーズで気持ちがいいだけでなく,デザインを簡単に変更することができ,コードもシンプルな,使いやすいライブラリです。

ライセンスは「Creative Commons Attribution 2.5」となっており,商用利用も可能となっています。Windows IE6でも動作確認が取れているため,総合的にとても使いやすいものとなっています。

複数の画像を使ったギャラリー

今回は,複数の画像を使ったギャラリーを作ってみます。

図2 ギャラリーの完成図

図2 ギャラリーの完成図

アンカーリンク付きのul,liのリストタグで,画像を並べます。

図3 prettyPhotoを使ったオーバーレイ表示

図3 prettyPhotoを使ったオーバーレイ表示

そしてサムネイルをクリックすると,ふわっと画像が大きくなるとともに,背景がグレーアウトするというものです。

API,ライブラリ,CSSを読み込む

それでは,サンプルのソースを見ていきましょう。

XHTMLソース(headタグ内)

<div id="wrap">
  <ul class="gallery clearfix">
    <li><a href="images/fullscreen/1.jpg" rel="prettyPhoto[gallery1]" title="Photographs of some kittens."><img src="images/thumbnails/t_1.jpg" width="60" height="60" alt="kitten1" /></a></li>
    <li><a href="images/fullscreen/2.jpg" rel="prettyPhoto[gallery1]"><img src="images/thumbnails/t_2.jpg" width="60" height="60" alt="kitten2" /></a></li>
    <li><a href="images/fullscreen/3.jpg" rel="prettyPhoto[gallery1]"><img src="images/thumbnails/t_3.jpg" width="60" height="60" alt="kitten3" /></a></li>
    <li><a href="images/fullscreen/4.jpg" rel="prettyPhoto[gallery1]"><img src="images/thumbnails/t_4.jpg" width="60" height="60" alt="kitten4" /></a></li>
    <li><a href="images/fullscreen/5.jpg" rel="prettyPhoto[gallery1]"><img src="images/thumbnails/t_5.jpg" width="60" height="60" alt="kitten5" /></a></li>
  </ul>
</div>
<!--wrap end-->

まず,http://www.google.com/jsapiを読み込んで,Google AJAX APIを使用します。⁠google.load("jquery", "1.3");」の箇所で,jQueryの1.3系の最新版を常に読み込むことになります。

その他にも以下を読み込んでいます。

  • JavaScript → jquery.prettyPhoto.js
  • CSS → prettyPhoto.css

また,ここでは「style.css」として,独自にコーディングしたCSSを読み込み,ページのスタイルを指定します。

著者プロフィール

川下城誉(かわしもくにたか;CREAMU)

Web制作・ブランディングを主軸とした(株)CREAMU 代表取締役。海外のWeb情報を紹介するblog「CREAMU」を運営中。

URLhttp://www.creamu.co.jp/

コメント

  • Chromeでも

    「HTML5 and web standards.」ですが、ChromeでもVR以外はOKでした。

    Commented : #2  ath (2010/12/13, 16:09)

  • 誤字?

    「1つ目は,ライブラリの動きはカスタマイズが用意でないこと。」
    用意⇒容易、ですよね。機会があれば修正してください。

    Commented : #1  ath (2010/12/13, 15:50)

コメントの記入