Lightbox Plus で画像を同一画面にオーバーレイして表示

Drk7jpトップ > MT >

Movable Type に関連する情報やプラグインを公開。お天気情報プラグインが一番人気

Lightbox Plus で画像を同一画面にオーバーレイして表示

前からやろうやろうと思っていたことなのですが、サムネイルをクリックしたときに別画面を起ち上げて元画像を表示するのではなくて、同一画面上にレイヤー重ねて表示したいと思ってました。世の中には便利 Javascript が公開されていまして、メジャーどころで言えば、Lightbox JS ってやつがそうです。

使い方を丁寧に説明してあるサイトで有名どころは、「小粋空間: Lightbox JS で画像を表示する」あたりでしょうか。僕的には Lightbox を更に拡張した Lightbox Plus を入れることにしました。

作者のサイトに寄りますと、Lightbox Plus の拡張点としては、
  • ウィンドウサイズよりも大きな画像を表示した際に、画像の拡大ができます。
  • 表示画像のサイズと表示位置がリアルタイムでウィンドウサイズに追従します。
  • 効果画像を貼付けることができます。

とのこと。大きい画像が画面内に入りきらないときの処理が追加されている点が欲しかったです。

ただ、Lightbox を使うためには、

<a href="sample.JPG" rel="lightbox"><img alt="sample.JPG" src="sample-thumb.JPG" /></a>

のように、rel 属性を付与してあげる必要があります。既にブログを構築済みの場合、全てのエントリーを書き直すのは現実的にあり得ない選択肢。とは言え、新しいエントリーだけ対応するってのもなんだかなぁ〜。

で、Lightbox Plus を更に Hack 。ようは、アンカータグ(a href=ってやつのこと)の href 属性が画像であれば、lightbox が機能すればいいんだよね。少なくとも僕の場合は。ってことで、

/*
if (!anchor.getAttribute("href")
  || anchor.getAttribute("rel") != "lightbox") continue;
*/
// アンカータグで画像へのリンクの場合、lightbox が機能するように変更
if (!anchor.getAttribute("href")) continue;
if (!anchor.getAttribute("href").match(/.+(jpg|gif|png)$/i)) continue;

こんな感じにソースを書き直せば、rel 属性をつけなくても勝手に画像へのリンクだけが Lightbox が機能するようになります。改変ソースが欲しい方は、こちらを右クリックで保存してください

例えば、別画面で元画像を表示するサンプルはこんな感じ。今までも下記のような html を書いています。

<a href="http://www.drk7.jp/MT/drk/images/20060317/DSCN6147.JPG" target="_blank"><img alt="DSCN6147.JPG" src="http://www.drk7.jp/MT/drk/images/20060317/DSCN6147-thumb.JPG" width="300" height="225" border="0" /></a>

特に rel 指定がなくても、Lightbox が機能して、拡大表示されます。target 属性もちゃんと無視されて同一画面になります。

DSCN6147.JPG


Posted by drk at 2006年03月18日 10:24 | おすすめ情報 | Comments (5) | はてなブックマークに追加 |
このエントリーに関連するキーワードとエントリ一覧

以下の書籍が参考になります

コメントをお寄せください










本件に対するコメント(5件)
大変わかりやすいHPですばらしいですね!
ひとつ教えていただきたいのですがlightboxで画像を拡大したときに拡大画像のトップマージンをゼロにするにはどのようにしたらよいのでしょうか?拡大画像を一番上に持っていきたいのですが。
新潟市近郊の写真集を作っているのですが一部 lightbox を使用したいのですが大きい画像だと下に隠れてしまうためです。
よろしくお願いいたします。
Posted by 雅之(新潟市) at 2008年07月15日 22:58
はじめまして。
ちょっと気付いたのですが日本語のファイル名だとFirefoxでは大丈夫ですがIEだとローディングの
ままで読み込めない…ようです。
Posted by sharp at 2006年09月08日 22:01
そうですね、細かいことを考えてたらきりがないですもんね。
closeボタン、少し位置がずれても目立たないようにデザインと表示位置を変えようかとも思いましたが、drkさんがおっしゃるように画像をクリックすれば閉じるので、思い切って取ってしまいました。

文字数が多い時に機能しないことがあるのは気付きませんでした。
動作が鈍い時はちらほらあるのですが。。。
知識不足でお役に立てなくて申し訳ないです。

Posted by mamiko at 2006年03月22日 22:03
mamikoさん>そうですね。FireFox だとおかしくなります。ただ、あまり細かいことは気にせずに使えばいいか・・・と深追いをしていません。よく考えたら、クリックすれば画像は閉じるので、closeボタンは表示しなくても良いかもしれませんね。

と、もう一つ気になっている点があるのですが、文字数が多いページの場合、JSの読み込むタイミング等で、Lightbox が機能しないときもありますよね。こっちは何とかしたいなぁ〜と思ったりしていますが、うまい解決方法ありますでしょうか?

Posted by drk at 2006年03月21日 17:38
はじめまして。
改変ソースをいただきました。
Lightbox Plus導入以前の画像にも対応できる上に、これからrel="lightbox"を記述しなくて済むので、とても助かりました。
ありがとうございました。

それと、お聞きしたいことがあるのですが・・・。
Lightbox Plusで大きめの画像を表示した時に、close.gifの表示される位置がほんの少し左に寄ってしまい枠との間に隙間が出来てないでしょうか?(ウィンドウより大きい画像を拡大した時はずれていません)
改変ソースに直接関係ないことなので不適切かと思いましたが、こちらのサイトも同じような状態でしたので質問させていただきました。
※※本家のものをそのまま使っていた時も同じ状態でしたので、こちらの改変ソースに問題があるという意味では全くありません※※

Posted by mamiko at 2006年03月21日 17:26

[△top]

サイト内検索


スポンサードリンク


このブログ中の人に連絡を取りたい

ブログ・アフィリエイト支援ツール

楽天の人気商品をピックアップ

最近の記事

Archives(月別)