画像だけでなく、各種動画ファイル、YouTubeなどの動画サイト、自サイト内の別ページを lightbox 風に表示するための jQuery用プラグインです。
コンテンツを表示する際のフレームを通常の白枠ではなく、画像を使用したフレームに変更することもできます。
フリーの FLV プレイヤー JW FLV Player を入手することで FLV 形式のファイルを扱えるようになります。
デモは以下のリンクからどうぞ。
jQuery.lightpop.js サンプル
ダウンロード
使用方法
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 を指定すると、指定されたファイルをサムネイルとして表示させます。
対応している動画サイト
- YouTube
- Metacafe
- LiveLeak.com
- Google Video
SPIKE Powered By IFILM※ Ver.0.8.2 から未サポートになりました- Dailymotion
- Super Deluxe
- ニコニコ動画(RC2)
(サムネイル表示になります)※ Ver.0.8.3 以降ではプレイヤーが表示されます
対応しているビデオファイル形式
.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'}}});
アチャ、ダメなのですネ。
これでみれますかネ。(いじくり倒してこんな感じになりました。)
$(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 – チョコレイト・ディスコノーマル指定
ozaki さん、どもです。
リンクに fs=1 も付加する必要があるんですね、納得。
そういえば、以前言われていたのに忘れてました。
ありがとうございます。
😮
修正することなく全コントロール可能となりました。
htmlにて、
Perfume – チョコレイト・ディスコ + Fs + サイズ
Perfume – チョコレイト・ディスコ + Fs
Perfume – チョコレイト・ディスコ ノーマル指定
(ここで確認できるのかな??)
ozaki さん、どもです。
そんなわけで Ver.0.7.5 にグループ化を無効にするオプション
grouping:false
を追加しました。と記述してやれば、prev, next ボタンは表示されません。
また、
<param name="allowFullScreen" value="true" />
も付加されるように修正したのですがフルスクリーン表示はできないようです。うーん。 🙁
お手数ですがよろしくお願い致します。
😮
ozaki さん、どもです。
そういうニーズに答えるための、YouTube:param{} オプションなんですが、正常に動作していませんね。
これが正常に動作していれば
と書いてやれば、
<param name="allowFullScreen" value="true">
が付加されるはずなんですが…次回のバージョンアップ時に修正します。
グループ化の意味も何とかわかりました。 😮
ここでお願いがあります。
jquery.lightpop.js の605行目と615行の2行を
“〜 />’;});” を
“〜 />’+’<param name=”allowFullScreen” value=”true” />’;});” に
(※半角では入力できないので全角に変換しています。)
さすれば、HTMLのリンク指定だけでフルスクリーン指定が可能となります。
「問題がなければ」改変してもらえないでしょうか?
なにぶん度素人なので後先考えておりません。
よろしくご検討願います。 m(_ _)m
ozaki さん、どもです。
前回のコメントを補足すると…
jQuery の each は、他言語の foreach の様に使えるメソッドです。
jQuery オブジェクトに対して、このメソッドを使うと、jQuery オブジェクトに含まれる DOM エレメント一つ一つについてコールバック関数が適用されます。
なので、上記のような書き方をしてやれば、一つずつ lightpop 効果が適用されるのでグループ化されないのです。
(参照: http://semooh.jp/jquery/api/core/each/callback/ )
は〜、グループ化しないオプションですか...。
もっと勉強せねば...。 😯
お忙しい中、ありがとうございます。
ガンバッテください。
ozaki さん、どもです。
対象の jQuery オブジェクトが複数ある場合に「NEXT(次へ)ボタン」と「PREV(前へ)」ボタンが表示されます。
以下の様に記述すれば、対象の jQuery オブジェクト一つ一つに対して lightpop 効果が適用され、グループ化されません。
$('a.lightpop').each(function(){ $(this).lightpop(); });
ただ、これだと面倒なので、次のバージョンではグループ化しないオプションを追加しておきますね。
質問させてください。 m(_ _)m
ポップアップするウィンドーの右と左にマウスを持ってくると表示する、
「NEXT(次へ)ボタン」と「PREV(前へ)」ボタンを非表示にする方法はありませんでしょうか?
コンテンツを表示する場合など、必要なオブジェクトをさわれなくて困っています。
ソースをいじらないといけないのでしょうか?
jjjj さん、どもです。
解決したようで良かったです。
一応 jquery.lightpop.js Ver.0.7.4 は、最新の jquery.js Ver.1.3.1 でも動作確認取れてます。
jQuery 1.3.1 では、DOMエレメントの取得が 1.2.6 よりも多少高速になってますので、そちらもお試しください。
😀 ありがとうございます。泣
js自体もきれいにまとめていただき、ありがとうございます。
どちらかというと、やはり、動くものなので、画像で見せるよりもFLASHのままで見せられる形があればなあ、(数が多いとバックで戻るのも面倒になる事があるので、リンク先に飛ばさずに、という形で探していました。。。)と思ったので助かりました!泣
しかも、iconAdd:falseまで指定していただき。。(最初消そうかなと思ったのですが、つけるのもいいかな、と思って、そのあたりは後々いじることにします。)
上記の記述で対応したところ、.swfのaにはきちんとクラス指定を付け足して対応すると、きちんと動作することができました。(自分への確認用として、外しても確認してみました。初歩的なところですが。)
ご丁寧に解説していただき、ありがとうございました。js理解、まだまだ先になりますが、助かりました!
また、何かありましたら、宜しくお願い致します。
jjjj さん、どもです。
例示されたサイトであれば、JavaScript 部分は以下の用に記述すれば動作します。
# URL は削除しておきました。
PS:URL後ほど削除願います。。。
ありがとうございます。
お言葉に甘えてしまってよろしいのでしょうか?
実際に、入れてみましたが、やっぱりリンク先に飛んでブラウザの100%表示に。。。
期限が迫っているので、力添えしていただけると幸いです。(ソースが汚かったり、まだまだ改善が必要ですが。)
どうしてもjsは不得意になりがちです。。(実際に、今現在修正をしなくては、と思いつつ、現在、IEでエラーが出ていますし。)
本当に、ソースなど汚い状態ですが、こちらになります。
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 を提示していただければ、細かいアドバイスができるかもしれません。
レス、ありがとうございます。ほぼ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も試しに入れてみましたが、難なく動きました。 😥
何が原因かつかめませんが、、、
再度見直してみます。
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/ ) 等を参考にしてみてください。
はじめまして。
とても良くできているので、自分の作品を見せるのに使用させていただきました!(動画もOKというのを探していましたので)
さてさて、説明には、swfも表示できる、との事なので、フラッシュで作ったものを見せたい場合、どのように埋め込むのが良いのでしょうか?
ちなみに、記述が悪いのか、jsに記述を足していないのか。。。以下の方法だと、うまく作動しません。(flashは動きますが、lightpop上で作動しないのと、表示サイズの問題があります。。。)
swfをそのまま⇒リンク先に飛んで、ブラウザ100%表示(戻るにはバックボタンのみ有効)
<a href="images/●●●●.swf" title="●●●●" rel="nofollow"> <img alt="●●●●●"> </a>
更に、上記にサイズを足して見ましたが、同じ状態でした。。。
という…初歩的かもしれませんが、もしや、swfのばあい、長ったらしい記述を埋め込む必要がありますかね、やはり。。。。
若しくは、どう記述すれば、うまく、swfが作動するのでしょうか?jsを書き直す必要がありますか?
Rapidd さん、初めまして。
おぉ、本当だ!
デモページのほうも JW MediaPlayer 3.16 に入れ替えたので、無事動作するようになりました。
貴重な情報ありがとうございました。
追記
私の環境で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のバージョンが原因かもしれませんね。
お騒がせしました。
はじめまして。
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回目以降も再生されるようです。
何か原因などわかりますでしょうか?
ozaki さん、どもです。
IE7, Safari, Opera でも試してみたけど良いみたいなので、本文も書き換えておきます。
有用な情報ありがとうございました 😀
ありがとうございます。
バッチリOKです!! 😛