2007年6月10日

写真のかっこいい表示 LightBox2

写真地図ブラウザで写真をどう表示するか。なかなか難しい。そこでとりあえずlightbox.jsという写真表示のjavascsript libraryを使ってみた。

特徴は

  • 表示方法がカッコ良い。
  • 実装方法もカッコ良い。しっかりしている。
  • 表示方法が工夫されているので、画像データのロード時間が気にならない。
    というか、急いで見たい気が薄れる。
  • さらに写真セットとすると、プリロードしてくれて、2枚目以降が表示が速い。

ホームページはLightBox2 by Lokesh Dhakar

1.必要なもののダウンロード
LightBox2の ダウンロードページより
lightbox2.03.3.zipをダウンロード/解凍。
ちなみに、scriptaculousのフルパッケージは script.aculo.us/downloads よりダウンロード可。
2.画像ファイルの場所の指定
lightbox.jsとlightbox.cssに画像ファイルの場所が指定されているので、アップロード する場所を考えて修正。今回は全てhttp://genisgen.googlepages.com/直下にアップロード するので(googlepagesにはfolderを作成できず、直下にしかアップロードできない)、 例えばlightbox.jsの65行目の"images/loading.gif""http://genisgen.googlepages.com/loading.gif"に修正。 lightbox.jsの66行目、lightbox.cssの47行目52行目53行目も同様に修正。
3.必要なもののアップロード
effects.js, prev.gif, next.gif, loading.gif, close.gif, lightbox.css, lightbox.js, blank.gif, closelabel.gif
4.リンクの設定
<link rel="stylesheet" href="css/lightbox.css" type="text/css" media="screen" /><head>タグ内に挿入。
bloggerの場合だと、テンプレート>HTMLの編集より。

これで準備は完了。あとは、以下のように書けば使用可能。

<script type="text/javascript"
 src="http://genisgen.googlepages.com/prototype.js>
</script>
<script type="text/javascript"
 src="http://genisgen.googlepages.com/scriptaculous.js?load=effects">
</script>
<script type="text/javascript"
 src="http://genisgen.googlepages.com/lightbox.js">
</script>
<a href="http://farm2.static.flickr.com/1001/527593023_6ff2e308bd.jpg" 
   rel="lightbox">image #1</a>

実行例:

写真セットの実行例:

問題:
ただし問題は、表示される写真にリンクを付与できないこと。表示される写真をクリックしたら、その写真のブログページに飛ぶようにしたい。まぁ、これはlightbox.jsをハックするしかないんだろう。それほど難しくはないような気がする。
と思ったけど、こんなニーズは他にも沢山あるような気がしてlightboxのホームページを見直したら、対応方法が書いてあった。危ない、危ない。いつも部下に言っている『他の人も欲しがりそうなことは、転がっているはずと考えろ』を忘れていた。恥ずかしい。

<a href="images/image-4.jpg" rel="lightbox"
title="&lt;a href=&quot;link.html&quot;&gt;my link&lt;/a&gt;">
  Image
</a>

リンクの実行例:

javascriptの関数からの実行
Google Mapsで使うことを考えると、javascriptの関数から表示できるようにしなければならない。<a>オブジェクトのメソッドで出来そう。ということで Microsoft Developer NetworkHTML and DHTML Referenceに。Objects>a>Methodsでclick()を発見。このサイトは助かる。サンプルプログラムもあるし。
だけどFirefoxではダメだって。mozilla developer centerDOM:element.clickに書いてある。
ここでまたまた暴走。Firefoxでどうすれば良いか必死に探しちゃった。難しそうと分かって初めて気付いた。他の人も困っているはず。Lightbox forumにあたったら直ぐあった。
答えはmyLightbox.start(クリックしたいaオブジェクト)という関数を使うこと。

javascriptからの実行例:

0 件のコメント: