jQuery.lightpop.js

画像だけでなく、各種動画ファイル、YouTubeなどの動画サイト、自サイト内の別ページを lightbox 風に表示するための jQuery用プラグインです。
コンテンツを表示する際のフレームを通常の白枠ではなく、画像を使用したフレームに変更することもできます。
フリーの FLV プレイヤー JW FLV Player を入手することで FLV 形式のファイルを扱えるようになります。

デモは以下のリンクからどうぞ。
jQuery.lightpop.js サンプル

ダウンロード

jQuery.lightpop plugin

使用方法

jQuery JavaScript Library を別途入手して、ヘッダ部に以下のように記述してください。

<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/jquery.lightpop-0.x.x.js"></script>

あとは適用させたい要素に対して、以下のように記述してやれば、動作します。

<script type="text/javascript">
$(function() {
 // <a href="http://hogehoge/" rel="lightbox"> な要素
 $('a[rel*=lightbox]').lightpop();
 // <a href="http://hogehoge/" class="lightpop"> な要素
 $('a.lightpop').lightpop();
 // 画像ファイルへのリンク
 $('a[href$=.jpg], a[href$=.gif], a[href$=.png]').lightpop();
 // YouTube へのリンク
 $('a[href*=.youtube.com/watch]').lightpop();
});

指定された要素のうち jQuery.lightpop.js を適用可能な要素にのみ適用されます。
# つまり $('a').lightpop(); などとやってもおっけ。(時間はかかりますが (^^;;)

※ただし、動画ファイル・自サイト内の別ページへのリンクは http://example.com/hogehoge.flv?width=320&height=240 のように width, height を指定してやってください。
また FLV へのリンクに限り http://example.com/hogehoge.flv?width=320&height=240&image=http://example.com/hogehoge.jpg のように image を指定すると、指定されたファイルをサムネイルとして表示させます。

対応している動画サイト

対応しているビデオファイル形式

.3gp -> Quicktime Player
.asf -> Windows Media Player
.avi -> Windows Media Player
.mp4 -> Quicktime Player
.mpg -> Windows Media Player
.mov -> Quicktime Player
.rm -> Realplayer
.swf -> Flash 8 plugin
.flv -> Flash 8 plugin
※フリーの FLV プレイヤー JW FLV Player の導入が必要
.wmv -> Windows Media Player

オプションの設定

オプションを設定することで、フレーム枠の見た目を変更したりできます。
オプションは、ざっと次の通り。

通常のオプション

  • overlayBgColor:
    オーバーレイの背景色
  • overlayOpacity:
    オーバーレイの透明度
  • contentFrameType:
    'border' (通常) or 'box' (画像を使用してフレームを表示)
  • contentBgColor:
    コンテンツの背景色
  • containerBorderSize:
    コンテンツの脇に表示する空白の幅を px で指定
  • containerResizeSpeed:
    リサイズアニメーション時のスピードを数値で指定
  • imageLoading:
    読み込み中に表示する画像ファイルのパス
  • imageBtnClose:
    「閉じる」ボタン用の画像ファイルのパス
  • imageBtnPrev:
    「前へ」ボタン用の画像ファイルのパス
  • imageBtnNext:
    「次へ」ボタン用の画像ファイルのパス
  • imageBlank:
    空白表示用の画像ファイル
  • keyToClose:
    「閉じる」へのキーボードショートカット
  • keyToPrev:
    「前へ」へのキーボードショートカット
  • keyToNext:
    「次へ」へのキーボードショートカット
  • flvplayer:
    JW FLV Player のパス
  • iconAdd:
    テキストリンクの前にアイコンを表示する場合は true、しない場合は false を指定
  • setLinkToTitle:
    拡大表示したメディアのタイトル部分にリンクを設定する場合は true を指定
  • grouping:
    画像・動画のグループ化を無効にしたい場合は false を指定 (Ver.0.7.5 以降で有効なオプション)

contentFrameType が border の場合、有効なオプション

  • contentBorder:
    ボーダーに適用させたい CSS
    (例:黒で幅1pxの実線を適用させたければ、'1px solid #000′)

contentFrameType が box の場合、有効なオプション

  • boxBorderSize:
    フレーム画像の幅を px で指定
  • imageBox:
    フレーム画像ファイルのパス
  • imageBorderL:
    フレーム左枠表示用画像ファイルのパス
  • imageBorderR:
    フレーム左枠表示用画像ファイルのパス

リンク種類毎のオプション

各リンク種類毎にオプション設定ができます。
設定できるリンク種類は以下のとおり。

  • Image:
    画像ファイルへのリンク
  • Video:
    動画ファイルへのリンク
  • YouTube:
    YouTubeへのリンク
  • Metacafe:
    Metacafeへのリンク
  • LiveLeak:
    LiveLeakへのリンク
  • GoogleVideo:
    GoogleVideoへのリンク
  • ifilm:
    ifilmへのリンク
  • Dailymotion:
    Dailymotionへのリンク
  • superdeluxe:
    superdeluxeへのリンク
  • nicovideo:
    ニコニコ動画へのリンク
  • Contents:
    上記以外のリンク

各リンク種類は、それぞれ以下のオプションを設定できます。

  • enabled: (全リンク種類共通)
    有効 / 無効 を true or false で指定(デフォルトは true)
  • icon: (全リンク種類共通)
    iconAdd が true の場合、リンクの前に表示するアイコンファイルのパス
  • size: (全リンク種類共通)
    幅、高さを配列で指定。
    例:Video:{size:[640,480]}
    → 動画のデフォルトサイズを幅 640, 高さ 480に指定する
    # 画像の場合は最大幅・高さとなり、元画像の幅・高さがこれを超えていた場合、縮小して表示する。
  • param: (ニコニコ動画以外の動画サイトへのリンク種類)
    各動画サイトの動画プレーヤーに設定するパラメーターを指定。
    例:{'hl':'ja','autoplay':'1′,'fmt':'22'}
    → YouTube の動画プレーヤーに 言語:日本語、自動再生:on、高画質モード:on を設定
  • iframeEnabled: (Contents のみ)
    true が指定されていると、リンク先表示時に <iframe> 要素の中に表示する。(デフォルトは true)

例:

// 背景を白の透過画像にし、銀色で幅1pxのボーダーで囲む。
$('a[href^=http://jp.youtube.com/watch]').lightpop({overlayBgColor:'#FFF', contentBorder:'1px solid silver'});
// 背景を白の透過画像にし、デザインされたフレームで囲む。
$('a[rel*=lightbox]').lightpop({overlayBgColor:'#FFF', contentFrameType:'box'});
// YouTube を自動再生・高画質モードで表示する。
$('a[href^=http://jp.youtube.com/watch]').lightpop({YouTube:{enabled:true,param:{'hl':'ja','autoplay':'1','fmt':'18'}}});

jQuery.lightpop.js」への229件のフィードバック

  1. ozaki

    アチャ、ダメなのですネ。

    これでみれますかネ。(いじくり倒してこんな感じになりました。)

    $(function() {
    $(‘a[rel*=lightbox]’).lightpop({overlayBgColor:’#FFF’,contentBorder:’1px solid silver’});
    $(‘a[href$=.jpg], a[href$=.gif], a[href$=.png]’).lightpop({overlayBgColor:’#FFF’,contentBorder:’1px solid silver’});
    $(‘a[href^=http://jp.youtube.com/watch]’).lightpop({YouTube:{enabled:true,param:{‘hl’:’ja’,’fs’:’1′,’autoplay’:’0′,’fmt’:’22’}}});
    $(‘a[href*=.youtube.com/watch]’).lightpop({overlayBgColor:’#FFF’,contentBorder:’1px solid silver’});
    $(‘a[@rel*=lightpop]’).each(function(){ $(this).lightpop({overlayBgColor:’#FFF’,contentFrameType:’box’,flvplayer:’http://lisa-net.org/src/mediaplayer.swf’}); });
    $(‘a.video’).lightpop({iframeEnabled:false,overlayBgColor:’#FFF’,contentBorder:’1px solid silver’});
    $(‘a.content’).each(function(){ $(this).lightpop({iframeEnabled:false,overlayBgColor:’#FFF’,contentBorder:’1px solid silver’}); });
    });

    Perfume – チョコレイト・ディスコ+ Fs + サイズ
    Perfume – チョコレイト・ディスコ+ Fs
    Perfume – チョコレイト・ディスコノーマル指定

    返信
  2. をかもと 投稿作成者

    ozaki さん、どもです。
    リンクに fs=1 も付加する必要があるんですね、納得。
    そういえば、以前言われていたのに忘れてました。

    返信
  3. をかもと 投稿作成者

    ozaki さん、どもです。

    そんなわけで Ver.0.7.5 にグループ化を無効にするオプション grouping:false を追加しました。

    $('a[href^=http://jp.youtube.com/watch]').lightpop({grouping:false});

    と記述してやれば、prev, next ボタンは表示されません。

    また、<param name="allowFullScreen" value="true" /> も付加されるように修正したのですがフルスクリーン表示はできないようです。
    うーん。 🙁

    返信
  4. をかもと 投稿作成者

    ozaki さん、どもです。

    さすれば、HTMLのリンク指定だけでフルスクリーン指定が可能となります。
    「問題がなければ」改変してもらえないでしょうか?

    そういうニーズに答えるための、YouTube:param{} オプションなんですが、正常に動作していませんね。
    これが正常に動作していれば

    $('a[href^=http://jp.youtube.com/watch]').lightpop({YouTube:{param:{'allowFullScreen':'true'}}});

    と書いてやれば、<param name="allowFullScreen" value="true"> が付加されるはずなんですが…

    次回のバージョンアップ時に修正します。

    返信
  5. ozaki

    グループ化の意味も何とかわかりました。 😮

    ここでお願いがあります。
    jquery.lightpop.js の605行目と615行の2行を

     “〜 />’;});” を
     “〜 />’+’<param name=”allowFullScreen” value=”true” />’;});” に
     (※半角では入力できないので全角に変換しています。)

    さすれば、HTMLのリンク指定だけでフルスクリーン指定が可能となります。
    「問題がなければ」改変してもらえないでしょうか?

    なにぶん度素人なので後先考えておりません。
    よろしくご検討願います。                     m(_ _)m

    返信
  6. をかもと 投稿作成者

    ozaki さん、どもです。
    前回のコメントを補足すると…

    jQuery の each は、他言語の foreach の様に使えるメソッドです。
    jQuery オブジェクトに対して、このメソッドを使うと、jQuery オブジェクトに含まれる DOM エレメント一つ一つについてコールバック関数が適用されます。
    なので、上記のような書き方をしてやれば、一つずつ lightpop 効果が適用されるのでグループ化されないのです。
    (参照: http://semooh.jp/jquery/api/core/each/callback/

    返信
  7. ozaki

    は〜、グループ化しないオプションですか...。
    もっと勉強せねば...。 😯

    お忙しい中、ありがとうございます。
    ガンバッテください。

    返信
  8. をかもと 投稿作成者

    ozaki さん、どもです。

    対象の jQuery オブジェクトが複数ある場合に「NEXT(次へ)ボタン」と「PREV(前へ)」ボタンが表示されます。
    以下の様に記述すれば、対象の jQuery オブジェクト一つ一つに対して lightpop 効果が適用され、グループ化されません。

    $('a.lightpop').each(function(){ $(this).lightpop(); });

    ただ、これだと面倒なので、次のバージョンではグループ化しないオプションを追加しておきますね。

    返信
  9. ozaki

    質問させてください。 m(_ _)m

    ポップアップするウィンドーの右と左にマウスを持ってくると表示する、
    「NEXT(次へ)ボタン」と「PREV(前へ)」ボタンを非表示にする方法はありませんでしょうか?

    コンテンツを表示する場合など、必要なオブジェクトをさわれなくて困っています。
    ソースをいじらないといけないのでしょうか?

    返信
  10. をかもと 投稿作成者

    jjjj さん、どもです。
    解決したようで良かったです。

    一応 jquery.lightpop.js Ver.0.7.4 は、最新の jquery.js Ver.1.3.1 でも動作確認取れてます。
    jQuery 1.3.1 では、DOMエレメントの取得が 1.2.6 よりも多少高速になってますので、そちらもお試しください。

    返信
  11. jjjj

    😀 ありがとうございます。泣

    js自体もきれいにまとめていただき、ありがとうございます。
    どちらかというと、やはり、動くものなので、画像で見せるよりもFLASHのままで見せられる形があればなあ、(数が多いとバックで戻るのも面倒になる事があるので、リンク先に飛ばさずに、という形で探していました。。。)と思ったので助かりました!泣

    しかも、iconAdd:falseまで指定していただき。。(最初消そうかなと思ったのですが、つけるのもいいかな、と思って、そのあたりは後々いじることにします。)

    上記の記述で対応したところ、.swfのaにはきちんとクラス指定を付け足して対応すると、きちんと動作することができました。(自分への確認用として、外しても確認してみました。初歩的なところですが。)

    ご丁寧に解説していただき、ありがとうございました。js理解、まだまだ先になりますが、助かりました!
    また、何かありましたら、宜しくお願い致します。

    返信
  12. をかもと 投稿作成者

    jjjj さん、どもです。

    例示されたサイトであれば、JavaScript 部分は以下の用に記述すれば動作します。

    <script type="text/javascript">
    $(function() {
      $("a.fla, a[href$=.jpg], a[href$=.gif], a[href$=.png]")
        .lightpop({overlayBgColor:"#FFF",contentBorder:"1px solid #EC008C",iconAdd:false});
    });
    </script>

    # URL は削除しておきました。

    返信
  13. jjjj

    ありがとうございます。

    お言葉に甘えてしまってよろしいのでしょうか?

    実際に、入れてみましたが、やっぱりリンク先に飛んでブラウザの100%表示に。。。

    期限が迫っているので、力添えしていただけると幸いです。(ソースが汚かったり、まだまだ改善が必要ですが。)

    どうしてもjsは不得意になりがちです。。(実際に、今現在修正をしなくては、と思いつつ、現在、IEでエラーが出ていますし。)

    本当に、ソースなど汚い状態ですが、こちらになります。

    返信
  14. をかもと 投稿作成者

    jjjj さん、どもです。

    HTML, JavaScript を以下の様に記述したらどうでしょう?

    HTML
    <a href="images/fla/●●●.swf?width=650&height=400" title="●●●" class="fla" rel="nofollow"> <img alt="●●●" /> </a>

    JavaScript
    $("a.fla").lightpop({overlayBgColor:"#FFF",contentBorder:"1px solid #EC008C"});

    差し支えなければ、実際のサイトの URL を提示していただければ、細かいアドバイスができるかもしれません。

    返信
  15. jjjj

    レス、ありがとうございます。ほぼjsに関しては初心者状態ですので丁寧な書き方で参考になりました。

    その後、指定を割り振ってあげたのですが、以下のように入れてみましたが、前と動作が同じになってしまいます。
    HTML内のjsの記述は以下になります。

    // FLAファイルへのリンク
    $(“a[href$=.swf]”).lightpop({overlayBgColor:’#FFF’,contentBorder:’1px solid #EC008C’});
    $(“a.fla”).lightpop();

    HTML
    <a href="images/fla/●●●.swf?width=650&height=400" title="●●●" rel="nofollow"> <img alt="●●●" /> </a>
    ※画像のrollover用に別途jsを入れているので、imgの中にname,classの指定あり。

    上記のもの以外は、画像はもちろんですが、YouTube URLも試しに入れてみましたが、難なく動きました。 😥
    何が原因かつかめませんが、、、
    再度見直してみます。

    返信
  16. をかもと 投稿作成者

    jjjj さん、はじめまして。

    例示されたような swf へのリンクに対して、jquery.lightpop.js を動作させるには jquery.lightpop.js を呼び出す時に以下のように書いてください。
    $("a[href$=.swf]").lightpop();
    この JavaScript は、.swf で終了する <a> に対して、lightpop() を適用すると言う意味になります。

    あと jquery.lightpop.js では、画像ファイル以外はサイズを自動取得できません。
    なので、以下のように記述して swf のサイズを指定してやってください。
    <a href="images/●●●●.swf?width=320&height=240" title="●●●●" rel="nofollow"> <img alt="●●●●●"> </a>

    ただ、これだと .swf で終了する <a> では無くなってしまうため、以下のように <a> 要素に適当なクラスを割り振ってあげたほうが良いでしょう。
    <a href="images/●●●●.swf?width=320&height=240" class="lightpop" title="●●●●" rel="nofollow"> <img alt="●●●●●"> </a>

    この場合の jquery.lightpop.js を呼出すための JavaScript は、以下のようになります。
    $("a.lightpop").lightpop();
    この JavaScript は、lightpop と言うクラスの <a> に対して、lightpop() を適用すると言う意味になります。

    この辺の jQuery の記法について詳しく知りたい場合は jQuery リファレンス ( http://semooh.jp/jquery/ ) 等を参考にしてみてください。

    返信
  17. jjjj

    はじめまして。
    とても良くできているので、自分の作品を見せるのに使用させていただきました!(動画もOKというのを探していましたので)
    さてさて、説明には、swfも表示できる、との事なので、フラッシュで作ったものを見せたい場合、どのように埋め込むのが良いのでしょうか?
    ちなみに、記述が悪いのか、jsに記述を足していないのか。。。以下の方法だと、うまく作動しません。(flashは動きますが、lightpop上で作動しないのと、表示サイズの問題があります。。。)

    swfをそのまま⇒リンク先に飛んで、ブラウザ100%表示(戻るにはバックボタンのみ有効)

    <a href="images/●●●●.swf" title="●●●●" rel="nofollow"> <img alt="●●●●●"> </a>

    更に、上記にサイズを足して見ましたが、同じ状態でした。。。

    という…初歩的かもしれませんが、もしや、swfのばあい、長ったらしい記述を埋め込む必要がありますかね、やはり。。。。
    若しくは、どう記述すれば、うまく、swfが作動するのでしょうか?jsを書き直す必要がありますか?

    返信
  18. をかもと 投稿作成者

    Rapidd さん、初めまして。

    JW MediaPlayerのバージョンが3.14だとIEで2回目以降表示されませんが
    バージョン3.16だと問題なく表示されました。

    おぉ、本当だ!
    デモページのほうも JW MediaPlayer 3.16 に入れ替えたので、無事動作するようになりました。
    貴重な情報ありがとうございました。

    返信
  19. Rapidd

    追記

    私の環境でlightpop.jsとJW MediaPlayerを構築してみたところ
    JW MediaPlayerのバージョンが3.14だとIEで2回目以降表示されませんが
    バージョン3.16だと問題なく表示されました。

    デモページ ( https://dogmap.jp/lightpop_sample/sample.html ) の
    JW MediaPlayerのバージョンは3.13で
    VideoPop Plusのページ(https://dogmap.jp/2007/08/10/videopop-plus/)の
    JW MediaPlayerのバージョンは3.16なので
    JW MediaPlayerのバージョンが原因かもしれませんね。

    お騒がせしました。

    返信
  20. Rapidd

    はじめまして。

    lightpop.js を使い、FLV再生を行おうとしているのですが
    デモページ ( https://dogmap.jp/lightpop_sample/sample.html ) のflv サンプルが
    windows xp sp2/IE 6.0の環境だと1回目は再生されますが2回目はポップアップだけ出て
    再生画面が表示されません。FF3.0だと問題無く2回目以降も再生されます。

    VideoPop Plusのデモ(ツバメ 子育て)は2回目以降も再生されるようです。

    何か原因などわかりますでしょうか?

    返信
  21. をかもと 投稿作成者

    ozaki さん、どもです。
    IE7, Safari, Opera でも試してみたけど良いみたいなので、本文も書き換えておきます。
    有用な情報ありがとうございました 😀

    返信

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください