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. をかもと 投稿作成者

    freewind さん、どもです。

    #lightpop-nav {width:100%;}に関しては jQuery.lightpop.js の中で動的にセットしているので、通常はスタイルシートで指定しなくても良いはずなんですが…
    直ったようで良かったです。

    で、ゴミ("white noise")の件ですが、原因が分かりました。

    jQuery.lightpop.js では jQuery の animate メソッドを使って写真拡大時のエフェクトを実現しています。
    jQuery 1.2.x の animate メソッドでは IE でも "white noise" が乗らないように対策されているようです。
    なので、通常は IE での "white noise" 問題は発生しません。
    # 実際には一瞬表示され、その後消える。

    で、freewind さんのサイトで、この "white noise" が乗ってしまう現象なんですが ifx.js に原因があります。
    ifx.js が jQuery の animate メソッドをオーバーライドしているのですが、オーバーライドされた animate メソッドは残念ながら IE の "white noise" 問題を考慮していないようです。

    対応策としては ifx.js で animate メソッドをオーバーライドしないようにすれば良いのですが、これだと Horizontal Accordion Plugin が動作しなくなります。
    ifx.js の作者にバグ報告して修正してもらうのが良いと思われます。
    # 個人的には jQuery の animate メソッドを勝手にオーバーライドしてしまうような行儀の悪いライブラリは使わないほうがいいとは思うのですが。

    IE でデジタル写真に乗る "white noise" の件の話題は「デジタル写真の白い点々 – Atelier」辺りが参考になるかと思われます。

    返信
  2. freewind

    をかもとさん、ありがとうございます。

    ボタンは正常に動作するようになりました。

    画像のゴミは相変わらずです。
    写真によって酷かったり一見なさそうだったり。
    読み込み順をもう一度あれこれ試してみます。
    症状がIEのみっていうのが・・・不思議

    お暇がありますれば検討してみて下さい。
    宜しくお願いします。

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

    freewind さん、どもです。
    ちょっと確認してみました。
    一つ試してみてもらいたいことがあるのですが、CSS に以下を追加するとどうでしょうか?

    #lightpop-nav {width:100%;}

    Firebug で見た感じでは、これで良さそうなのですが、現在IEでは試せないため、これで直るかは分かりません。

    返信
  4. freewind

    ゴミの原因が判りました。

    Horizontal_Accordion_Pluginとの相性のようです。
    この中の、ifx.jsってのがクサイです。

    jQuery lightBox pluginを利用してみたたクローンテストサイト

    http://www.freewind-jp.net/f_test/

    コチラも同じ構成にしてみたところゴミは残りますが、ボタンは正常です。

    申し訳ありません。この対応をお願いするのは・・・場違いなのかなぁ

    返信
  5. freewind

    をかもとさん ありがとうございます。

    jQueryは1.2.6、jQuery.lightpop.js は0.6.1です。
    jQUeryは1.2.2でも試しましたが同じ症状でした。

    ちなみにサーバーの仕様は

    OS Fedora9

    SERVER::Apache
    PHP Version::5.2.6
    MySQL Version::5.0.51a
    XOOPS Version::XOOPS Cube Legacy 2.1.5

    XPressME Version::1.04
    WordPress Version::2.6.2
    WP DB Version::8204

    safemode:OFF
    register_globals:OFF
    magic_quotes_gpc:OFF
    XML extension:ON
    memory_limit:128M
    MB extension:ON
    mbstring.language:neutral
    mbstring.encoding_translation:OFF
    mbstring.internal_encoding:
    mbstring.http_input:pass
    mbstring.http_output:pass
    mbstring.detect_order:
    mbstring.substitute_character:
    mbstring.func_overload:OFF

    こんな感じです。

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

    freewind さん、はじめまして。

    ただいま、PCで確認できる状態にありません。
    週末には確認できると思いますので、少々お待ちください m(_ _)m

    ちなみに利用されている jQuery と jQuery.lightpop.js のバージョンは何でしょうか?

    返信
  7. freewind

    初めまして。

    先日より、XCLにてjquery.lightpopを利用させていただいております。

    どういう訳か、IE7ではNEXTボタンが表示されず。
    画像によってはゴミドットが乗ってしまいます。

    Firefox 3, Opera 9.5, Safari 3.1ではNEXTボタンがPREVボタンの隣に位置しています。
    ゴミはなく動作も場所以外は正常です。

    私のスキルではどうにも、原因がつかめずに困り果てています。

    ご確認&アドバイス頂けると助かります。
    宜しくお願いします。

    返信
  8. ozaki

    をかもと さん、ありがとうございました。

    スバヤイ対応本当にありがとうございました。
    今後とも「独断と偏見の何でもレビュー」を注視してまいります。
    (^_^)

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

    ozaki さん、どもです。

    IE で YouTube の表示が上手くいかない件、解決しました。
    IE7, Firefox 3, Opera 9.5, Safari 3.1(on WinXP) で、動作確認済みです。

    準備整い次第、正式版を用意します。

    今回は不具合報告ありがとうございました m(_ _)m

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

    ozaki さん、どもです。
    外出していて連絡が遅れました。

    IE7(系)はダメで、Firefox v3.0.1 でOKでした。

    あわわ、本当だ。
    YouTube 絡みは 0.6.0 にバージョンアップした際に結構変更してるんですが IE での確認を怠っていたようです。
    普段 Ubuntu + Firefox 3 を使用しているので (^^;;

    早目に対応します。

    返信
  11. ozaki

    をかもと さん、すいません。
    ブラウザーを変えると、問題解決しました。
    IE7(系)はダメで、
    Firefox v3.0.1 でOKでした。

    これって解決しますか?

    返信
  12. ozaki

    をかもと さん、すいません。
    ここの“jquery.lightpop.js サンプル”も表示しないのですが...。
    (同じ現象)

    ん〜〜〜??

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

    ozaki さん、どもです。

    YouTubeが表示しません。
    プレーヤは出るのですが、マックロクロスケです。
    YouTubeプレーヤ内のプロパティを見るとアドレスがありません。(渡されてません)

    Ver.0.6.0a を組み込んだ手元のデモだと、問題なさそうなんですが。
    jquery.lightpop.js サンプル

    差し支えなければ、使用しているページの URL を教えてもらえませんでしょうか?

    返信
  14. ozaki

    あれあれあれ??
    YouTubeが表示しません。
    プレーヤは出るのですが、マックロクロスケです。
    YouTubeプレーヤ内のプロパティを見ると
    アドレスがありません。(渡されてません)

    Ver.0.5.0以前では問題なく表示していました。
    何度もすいません。

    返信
  15. ozaki

    をかもと さん、ありがとうございます。
    バッチリOKです。 (^o^)

    これは本当に素晴らしいプラグインです!!
    今後ともがんばってください。

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

    sawa さん、どもです。

    132〜139行目を差し替えたのですが、ど〜もエラー(他のjsとバッティング?)が出てしまって上手くいきませんでした。。。

    提示したコードが間違ってました。
    iframe 版をこちらに置いておきますので、こちらでご確認ください。
    jquery.lightpop-0.6.0a.js

    ozaki さん、どもです。

    HTMLコンテンツ(content)表示をさせたのですが、コンテンツ内のJavaScript(FCKeditor)が表示されません。
    なぜなんでしょうネ。

    HTML コンテンツ表示させる場合は、GET した HTML を <div> 要素に入れているので、元ページで指定されている CSS, JavaScript 等が反映されません。
    sawa さんのコメントに答えて修正した iframe 版を使ってみてください。

    返信
  17. ozaki

    何度も申し訳ないです。 m(_ _)m
    HTMLコンテンツ(content)表示をさせたのですが、
    コンテンツ内のJavaScript(FCKeditor)が表示されません。
    なぜなんでしょうネ。
    度素人で申し訳ないのですがヒントをお教えください。

    返信
  18. sawa

    をかもとさん。ご回答ありがとうございます。

    ,set: function(contentNo){
    var arrSizes = get_sizes_from_str(arrContent[contentNo].href);
    var strSrc = ’<‘ + ‘iframe width=”’ + arrSizes[0] + ‘” height=”’ + arrSizes[1] + ‘” src=”’ + contentInfo[contentNo].href + ‘” scrolling=”no” style=”border:solid 1px #CCC;” frameborder=”0″><‘ + ‘a href=”’ + contentInfo[contentNo].href + ‘” rel=”nofollow”>’ + contentInfo[contentNo].tytle + ‘’;
    arrContent[contentNo] = jQuery.extend(arrContent[contentNo], {content:strSrc, width:arrSizes[0], height:arrSizes[1], later:500});
    set_content_to_view(contentNo);
    }

    132〜139行目を差し替えたのですが、ど〜もエラー(他のjsとバッティング?)が出てしまって上手くいきませんでした。。。
    ソースを見る限りではiframe化をし、スクロールバーなし。という感じでしょうか。画像のスクロールはこれで消せそうなのですが
    背景の黒(オーバレイ部分の余白)の余白も少なくできればと思っています。

    230行目の
    jQuery(‘#lightpop’).css({position:’absolute’, top:arrPageScroll[1] + Math.round(arrPageSizes[3] / 10), left:arrPageScroll[0], width:’100%’, textAlign:’center’, lineHeight:0, border:’none’, zIndex:100});

    jQuery(‘#lightpop’).css({position:’absolute’, top:10, left:arrPageScroll[0], width:’100%’, textAlign:’center’, lineHeight:0, border:’none’, zIndex:100});
    という感じに強引に変更した場合は余白が10pxになったのですが、FF2ではうまくいきませんでした。。。
    やりたい事としては、こんな感じになります。質問の仕方が悪くてスイマセンでした。

    なんども質問をしてしまってスイマセンが、お手すきの時にでもご教示頂ければと思います。

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

    sawa さん、どもです。
    商用サイトでの利用には、なんら制限を設けていませんので、バンバン使ってやってください。

    あるページを800x600サイズの固定で表示させた際に、lightpop.jsを使って
    イメージを表示させたいのですが、このイメージが700x450程度のきっちりサイズで
    作っており、理論上はスクロールバーが出ない計算になっています。

    別ページを Ajax 表示させる際は GET した HTML を <div> 要素に入れているので、元ページで指定されている CSS 等が反映されません。
    <iframe> 要素を作って、その中に入れれば元ページのイメージどおりに表示できると思います。
    具体的には 132 から 139 行目を以下の様に修正すればできるかな。

      ,set: function(contentNo){
        var arrSizes = get_sizes_from_str(arrContent[contentNo].href);
        var strSrc = '<' + 'iframe width="' + arrSizes[0] + '" height="' + arrSizes[1] + '" src="' + arrContent[contentNo].href + '" scrolling="no" style="border:solid 1px #CCC;" frameborder="0"><' + 'a href="' + arrContent[contentNo].href + '" rel="nofollow">' + arrContent[contentNo].tytle + '</a></iframe>';
        arrContent[contentNo] = jQuery.extend(arrContent[contentNo], {content:strSrc, width:arrSizes[0], height:arrSizes[1], later:500});
        set_content_to_view(contentNo);
       }

    この辺、次バージョンでは、パラメータの指定で変更できるように修正するかもしれません。

    返信
  20. sawa

    をかもとさん、ご返答ありがとうございました。

    ライセンスの件、GPLということで了解しました。
    jquery.lightpop.jsですが販売ではなく、商用サイトでの利用を考えています。

    一つ、ご質問なのですが実際にサンプルを作ってあれこれ触ってみたのですが
    分からない部分がありますのでご教示頂ければと思います。

    あるページを800x600サイズの固定で表示させた際に、lightpop.jsを使って
    イメージを表示させたいのですが、このイメージが700x450程度のきっちりサイズで
    作っており、理論上はスクロールバーが出ない計算になっています。
    しかし、overlayしたに上部の余白が大きく出てしまい、スクロールバーが出てしまいました。
    jsを見る限り、画面サイズを取得して余白を割り出しているっぽいのですが、どうにも
    うまくいきませんでした(IE6では詰めて表示できましたがFF2ではNG※WIN XP)

    なにかヒントや修正する場合の方法等をお教え頂ければと思います。
    よろしくお願いします。

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

    ozaki さん、はじめまして。

    確かに効かないですね。時間のある時に調査してみます。

    saw さん、はじめまして。

    一応、GPLで配布させてもらってます。
    GPL の主な特徴は

    • ソフトウェアは必ずソースプログラムとともに頒布、複製される。もしソースプログラムを付けずに配布する場合は、ソースプログラムを確実に入手できる手段を提供することが義務付けられる
    • ソフトウェアを、使用、複製、変更、頒布したり、新しいフリーソフトウェアの一部として利用できること
    • 変更、改良されたソフトウェアはGPLに従って頒布されること
    • プログラムの全部あるいは一部を用いて作られたソフトウェアはGPLに従って頒布されること
    • 基本的に無保証であり、そのソフトウェアが原因でトラブルが生じても作者に責任はないこと

    商用利用とは、商用サイトで使用すると言うことでしょうか?
    それともバンドルして販売する?
    商用サイトでの利用はなんら問題ありませんが、jquery.lighrpop.js を含んだ製品を販売すると言うことであれば、そちらも GPL で配布してもらう必要があります。

    返信
  22. sawa

    jQuery用のプラグイン(動画対応版)を探していて、こちらに辿り着きました。
    lightpop.jsですが、ライセンス的には商用利用も可能なのでしょうか?

    返信
  23. ozaki

    JW FLV Playerにて表示できるのですが、
    フルスクリーン表示(ボタン)が効きません。
    何とか効かせてもらえないでしょうか?

    返信
  24. ピンバック: Avantec - サイト管理記録 » 動画

  25. ピンバック: jQuery.lightBox を画像ファイル以外にも対応させる : 独断と偏見の何でもレビュー

コメントを残す

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

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