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

    追伸。

    高画質モード、フルスクリーンモードはOKなのだが、
    パラメータをそのままノーマルムービーに付けると
    再生されない。     😥

    返信
  2. ozaki

    をかもとさん お手数をお掛け致します。

    やはりfmt=18でもIE系はダメです。
    Mozilla系は低画質版が表示/再生されますネ。

    PukiWiki系のプラグインでも全滅でしたので
    やはり、簡単ではないのですね。

    度素人の浅知恵でした。    m(_ _)m

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

    ozaki さん、どもです。

    パラメータ fmt=22 は、ひょっとすると YouTube 以外のサイトに貼り付けたときは低画質版に差し替えられてしまうのかも知れません。
    YouTube の公式ドキュメントが無いので調べられませんが…
    fmt=18 でなら、再生されてます。
    #しかし fmt=18 じゃ無いかもしれない。

    返信
  4. ozaki

    YouTubeも高画質モードで少しずつコンテンツも増えてるので、

     $(‘a[href^=http://jp.youtube.com/watch]’).lightpop({overlayBgColor:’#FFF’,contentBorder:’1px solid silver’,YouTube:{enabled:true,param:{‘fmt’:’22’}}});

    で、
    <a href="http://jp.youtube.com/watch?v=8madt1xMG7w&width=640&height=360" title="YouTube" rel="nofollow">【 ♪ Chocolate Disco】  &fmt=22対応</a>
    としたのですが、
    ウィンドーは表示したのですが、再生されません。
    高画質モードで表示する方法はないでしょうか?
    ※YouTubeでもフルスクリーン表示できればいいのですが...。

    返信
  5. ピンバック: None_Programmer…Diary » Blog Archive » jqueryを使った動画表示

  6. ちゃくら

    をかもとさんへ

    可能になるなら大変有難く、また嬉しい限りです。

    HTML と CSS を何とかやってるようなレベルですが、 xampp で WordPress の環境を作れるようにはしてるので、私も jquery.lightpop.js を色々イジって勉強してみます。

    でも、いつの日か 「独断と偏見の何でもレビュー」 にエントリーが掲載されるのを気長に、そして密かに期待。(o^∇^o)

    こんなレベルの私の質問に親切に答えていただき、感謝、感謝です。

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

    ちゃくらさん、どもです。

    こちらでも、色々と考えてみますね。
    できそうならば、このブログにやり方をエントリしますので、気長にお待ちを。

    返信
  8. ちゃくら

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

    そうですか lightpop では出来ないのですね。

    教えていただいた 「jquery.lightpop.js で別ページの内容を iframe の中に表示させる。」を試してみようと思います。

    暗中模索のような状態でしたので親切なご回答とても助かりました。

    当面 jquery.lightpop.js とにらめっこしてみます。(o^∇^o)

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

    ちゃくらさん、はじめまして。

    現状の lightpop では、「Close」ボタン周辺に画像や動画のタイトル以外を表示することはできません。
    jquery.lightpop.js を修正すれば、表示させることはできると思いますが…

    代替案としては jquery.lightpop.js では、別ページの内容を iframe の中に表示させることもできるので、画像や動画を表示する専用の URL を別途用意し、その中に Google AdSense や Amazon などの広告を書いておけば広告を表示することはできます。
    ただし、この方法ですと WordPress のメディアライブラリや VideoPop+ が提供する動画表示を使用することはできません。

    返信
  10. ちゃくら

    始めまして。

    lightpop と VideoPop+ を使用させてもらい動画をメインに扱う個人サイトを運営しているものです。

    とても便利でかっこいいプラグインで大変重宝しており、とても有難く思っています。

    をかもとさんに質問していいものか少し迷ったのですが、検索しても中々ヒントが見つからずちょっと行き詰ってしまい、今回思い切ってコメントさせてもらいました。

    お聞きしたいのは lightpop で画像や動画が立ち上がった際に、Google AdSense や Amazon などの広告を画像や動画の下(「Close」ボタン周辺)に挿入することが出来ないかということです。

    お恥ずかしい話ですが jQuery について初心者なもので、既に的外れな質問をしていたら大変申し訳ありません。

    お手すきの時でかまいませんので、ヒントだけでも頂けましたら幸いです。

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

    freewind さん、どもです。

    「Kwicks for jQuery」、Mootools ライクな滑らかなアニメーションが中々良さそうですね。
    ちょっと見ただけですが、使い勝手も良さそうな感じ。

    こちらこそ、よろしくお願いします。

    返信
  12. freewind

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

    おかげさまで、
    Kwicks for jQuery 
    http://www.jeremymartin.name/projects.php?project=kwicks
    というのを見つけ、うまく構成できました。

    Lightpopとの相性も問題なく動作しています。
    http://www.freewind-jp.net

    このプラグイン、なかなか優れものです。
    縦横変更やイベント処理、バウンス効果等が、結構簡単に設定できてしまいます。

    ともかく、私のスキルもちょっとだけ上がったかなぁ

    苦労しましたが、なかなか充実した日々でした。

    また何かありましたら宜しくお願いします。

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

    freewind さん、どもです。

    これを参考に、自分で組み立てるべしっぽいですねぇ。
    はてさて・・・スキルいっぱいまで頑張ってみようかと思います。
    う〜〜〜ん、大変だ。

    おっ、頑張ってください。
    そのうち、私の方でも暇を見つけて解説エントリ書くかも。

    ちなみに、このサイトのサイドバーは水平アコーディオンに近い動きをします。
    これは jQuery を勉強し出した頃に書いたコードで、かなり単純です。
    以下のエントリでソースをさらしてますので、よろしければお暇な時にでも参照してみてください。
    「jQuery でスライドしつつ隠れるサイドバー」

    返信
  14. freewind

    をかもとさんありがとうございます。
    どうやら現在はjQueryのみでほぼ同様の動作が出来るようです。
    http://designreviver.com/tutorials/jquery-examples-horizontal-accordion/
    ゆえにサポートは無いのでしょうね。
    これを参考に、自分で組み立てるべしっぽいですねぇ。
    はてさて・・・スキルいっぱいまで頑張ってみようかと思います。
    う〜〜〜ん、大変だ。

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

    なさっくさん、どもです。

    思い通りに動いたようで良かったです。
    分かる範囲であれば回答しますので、いつでもご相談ください。

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

    freewind さん、どもです。

    調べてみたところ ifx.jsは http://interface.eyecon.ro/にあるInterface Elements for jQueryという
    ライブラリ集に含まれているもののようです。
    ん〜私は、英語もイマイチだし・・・連絡方が判らない。
    代わりのスクリプトを見つける方が早いのかと思案しておりますw

    IE だけの問題なので目をつぶるとか、トップページだけ Horizontal Accordion Plugin を使用するとかが現実的でしょうか。
    # 私も時間があり余って入れば ifx.js のパッチも手がけてみたいのですが、中々 😥

    あと、Interface Elements は jQuery 1.1.x の頃に開発されて jQuery が 1.2.x 系になってからはメンテナンスされていないようです。
    jQuery 1.2.x と組み合わせると不具合がでることも報告されてますね。
    # http://d.hatena.ne.jp/u1tnk/20080121 のコメント欄に修正方法記載あり。

    他にも不具合があるかもしれませんが、調べきれていません。

    返信
  17. なさっく

    をかもとさんへ

    triggerとゆのがあったんですね。

    ActionScript→getURL(“javascript:jQuery(\’a.open\’).lightpop().trigger(\’click\’);”);
    では起動しませんでした。

    ので、開く用functionをJavaScriptに追加
    function show(){
    jQuery(“a.open”).lightpop().trigger(“click”);
    }
    ActionScript→getURL(“javascript:show();”);

    で、うまくFlashからlightpop起動しましたぁ(^0^)/
    ほんとありがとうございます!!

    返信
  18. freewind

    をかもとさん

    調べてみたところ ifx.jsは http://interface.eyecon.ro/にあるInterface Elements for jQueryという
    ライブラリ集に含まれているもののようです。

    ん〜私は、英語もイマイチだし・・・連絡方が判らない。

    代わりのスクリプトを見つける方が早いのかと思案しておりますw

    いろいろお助け下さりありがとうございました。

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

    なさっくさん、どもです。

    通常、リンクをクリックすると、lightpopが起動しますが、
    クリックしないでも起動させることができれば、可能なような気がします。

    そういう事であれば jQuery の trigger メソッド が使えるかもしれません。
    これを使えば、指定の要素に対して Click イベントを発生させられます。
    例えば jQuery("a.open").lightpop().trigger("click"); のようにして使えます。
    ただ a.open な要素が複数あると、複数の <a> 要素に対して Click イベントが発生してしまうので注意が必要です。

    返信
  20. なさっく

    をかもとさんへ

    レスありがとうございます。
    通常、リンクをクリックすると、lightpopが起動しますが、
    クリックしないでも起動させることができれば、可能なような気がします。

    jQuery(“a.open”).lightpop();書いた後に、
    start_lightpop(“subwindow.html?width=800&height=600”);とか・・・(どう書けばいいか分かりませんが;)

    その部分がgetURL(”javascript:〜”);の「〜」あたりになるような・・・。
    lightpopソース眺めてますが難しいですね;

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

    なさっくさん、はじめまして。

    FlashからAjax表示を起動しようと思ってるのですが、
    どのようにしたらいいでしょうか?

    残念ながら ActionScript は触ったことが無いので分かりません。
    ググったら、こんなページが出てきましたけど、参考になります?
    FlashからJavaScript関数を呼び出す

    返信
  22. なさっく

    初めまして。

    FlashからAjax表示を起動しようと思ってるのですが、
    どのようにしたらいいでしょうか?
    getURL(“javascript:〜”);
    の〜部分が分かりません。

    いろいろ探してるのですが・・・
    教えていただけたら嬉しいです。

    返信

コメントを残す

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

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