Lightbox 2を使用しているのですが、
グループに指定した画像をループさせることは可能でしょうか。
http://lokeshdhakar.com/projects/lightbox2/
1つめの画像の「prev」をクリックで、最後の画像を表示、
最後の画像の「next」をクリックで1つ目の画像を表示させたいです。
javascriptは書かれていることはだいたいわかるのですが、
新規に自分で何かを作ったりカスタマイズしたりするほどの知識がありませんので、
具体的に教えて頂けると有難いです。
お手数ですが、ご存知の方宜しくお願いします。
No.3ベストアンサー
- 回答日時:
jquery.lightbox-0.5.js
/**
* Display the button navigations
*
*/
// _set_navigation関数
function _set_navigation() {
$('#lightbox-nav').show();
// Instead to define this configuration in CSS file, we define here. And its need to IE. Just.
$('#lightbox-nav-btnPrev,#lightbox-nav-btnNext').css({
'background': 'transparent url(' + settings.imageBlank + ') no-repeat'
});
// Show the prev button, if not the first image in set
// グループ化(画像が2以上)
if (settings.imageArray.length > 1) {
if (settings.fixedNavigation) {
$('#lightbox-nav-btnPrev').css({
'background': 'url(' + settings.imageBtnPrev + ') left 15% no-repeat'
}).unbind().bind ('click', function () {
var imageNum = settings.activeImage - 1;
// imageNumループ
if (imageNum < 0) imageNum = settings.imageArray.length - 1;
settings.activeImage = imageNum;
_set_image_to_view();
return false;
});
}
else {
// Show the images button for Next buttons
$('#lightbox-nav-btnPrev').unbind().hover(function () {
$(this).css({
'background': 'url(' + settings.imageBtnPrev + ') left 15% no-repeat'
});
}, function () {
$(this).css ({
'background': 'transparent url(' + settings.imageBlank + ') no-repeat'
});
}).show().bind('click', function () {
var imageNum = settings.activeImage - 1;
// imageNumループ
if (imageNum < 0) imageNum = settings.imageArray.length - 1;
settings.activeImage = imageNum;
_set_image_to_view();
return false;
});
}
}
// Show the next button, if not the last image in set
// グループ化(画像が2以上)
if (settings.imageArray.length > 1) {
if (settings.fixedNavigation) {
$('#lightbox-nav-btnNext').css({
'background': 'url(' + settings.imageBtnNext + ') right 15% no-repeat'
}).unbind().bind('click', function () {
var imageNum = settings.activeImage + 1;
// imageNumループ
if (imageNum > settings.imageArray.length - 1) imageNum = 0;
settings.activeImage = imageNum;
_set_image_to_view();
return false;
});
}
else {
// Show the images button for Next buttons
$('#lightbox-nav-btnNext').unbind().hover(function () {
$(this).css({
'background': 'url(' + settings.imageBtnNext + ') right 15% no-repeat'
});
}, function () {
$(this).css({
'background': 'transparent url(' + settings.imageBlank + ') no-repeat'
});
}).show().bind('click', function () {
var imageNum = settings.activeImage + 1;
// imageNumループ
if (imageNum > settings.imageArray.length - 1) imageNum = 0;
settings.activeImage = imageNum;
_set_image_to_view();
return false;
});
}
}
// Enable keyboard navigation
_enable_keyboard_navigation ();
}
// _set_navigation関数ここまで
_set_navigation関数を書き換えて下さい。
やってることは No.1 と同じです。
グループ化されていれば「prev」「next」を常に表示させ
imageNum(添え字)をimageArrayの範囲内でループさせてます。
※ 適当にやってますから、クライアントからクレームが来ないよう、十分注意して下さい。
No.2
- 回答日時:
No.1の「startフラグを置いた制御」は必要なかったかもです。
ありがとうございます!
無事解決出来て喜んでいたのですが…
クライアント様より、
下記のjQueryのものに変更しろと言われてしまいまして…。
http://leandrovieira.com/projects/jquery/lightbox/
せっかくご回答いただいたのに、大変申し訳ございません。
もし、ご面倒でなければ、改めてご享受願えませんでしょうか。
宜しくお願いいたします。
No.1
- 回答日時:
Lightboxを起動するstartメソッド。
画像を変更するchangeImageメソッド。「prev」「next」の表示を制御しているupdateNavメソッドの3つを書き換えます。
start: function(imageLink) {
// startフラグ
this.startPhase = true;
$$('select', 'object', 'embed')...
...
}
changeImage: function(imageNum) {
var length = this.imageArray.length;
// imageNumループ
if (!this.startPhase) {
if (imageNum > length - 1) imageNum = 0;
else if (imageNum < 0) imageNum = length - 1;
}
else this.startPhase = false;
this.activeImage=imageNum;//updateglobalvar
...
}
updateNav: function() {
this.hoverNav.show();
// グループ化(画像が2以上)
if (this.imageArray.length > 1) {
this.prevLink.show();
this.nextLink.show();
}
this.enableKeyboardNav();
}
changeImageメソッドはstartメソッドでも呼ばれるので、フラグを置きます。
changeImageメソッドの引数imageNumが画像リストの添え字にあたりますから
startメソッドでの呼出しでなければ、imageArrayの範囲内でループさせます。
updateNavメソッドの方は、グループ化されていれば「prev」「next」を常に表示させます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS トリミングで表示した画像をクリックで元どおりにしたい 3 2022/12/16 18:49
- WordPress(ワードプレス) Wordpress 複数プラグインの不具合? 1 2022/10/09 21:52
- その他(パソコン・スマホ・電化製品) アンドロイドスマホの画面にクリックするとJPG写真が開くショートカットを作りたいのですが、方法をおし 3 2023/08/27 10:01
- その他(プログラミング・Web制作) uwscとWinShotを使いスクリーンショットを撮る 1 2022/06/30 21:15
- Windows 10 2つのウィンドウ選択時の表示について 10 2023/07/25 08:48
- HTML・CSS 画像が分割されて切り替わる、ループアニメーションが作りたい 7 2023/05/27 17:12
- Android(アンドロイド) AQUOS ZEROの使い方教えて下さい 2 2022/03/27 17:21
- その他(プログラミング・Web制作) Leafletで画像をon、offさせる方法について 2 2022/11/01 15:34
- Excel(エクセル) excelvbaでスライドショーを作りたい 2 2023/04/20 14:32
- Windows 10 フォルダ内の全ての画像を矢印キーでスライドできるようにしたい 1 2022/10/21 12:53
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~12/2】 国民的アニメ『サザエさん』が打ち切りになった理由を教えてください
- ・ちょっと先の未来クイズ第5問
- ・【お題】ヒーローの謝罪会見
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
エクセルVBAのInputBoxメソ...
-
FEM解析の読み方は?
-
【sendkeysメソッドが動かずに...
-
ウィンドウを最前面にできません
-
列挙型:次の要素を返す?
-
エクセルVBAにおけるON TIMEメ...
-
描画した線や画像などを消す方法。
-
配列のメソッド
-
DataGridViewでセルクリックイ...
-
VB.NET2017 の IntelliSense に...
-
Java for文で、A という文字を1...
-
Lightboxのグループをループさ...
-
エクセルのvbaによる書式のコピ...
-
return文について質問
-
(String args[])というメッソ...
-
worksheets & rows メソッドは...
-
drawStringで文字間隔の調整
-
引数は省略できません。とのコ...
-
Excel VBA でExcelを終了したい...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
DataGridViewでセルクリックイ...
-
コマンドプロンプト実行後に画...
-
Labelコントロールに数字を代入...
-
Refreshメソッドの使い方
-
javascriptからjavaを呼び出したい
-
エクセルVBAにおけるON TIMEメ...
-
VBPをダブルクリックするとたま...
-
引数は省略できません。とのコ...
-
JSPで<SELECT>の中にDBから持っ...
-
final修飾子を使っているのに、...
-
エクセルのマクロでプリンタを...
-
【sendkeysメソッドが動かずに...
-
ウィンドウを最前面にできません
-
mainメソッドのthrows節で設定...
-
Application.Wait の参照設定
-
Excel VBA シェイプの原型のサ...
-
VB.netで、シリアル通信のタイ...
-
worksheets & rows メソッドは...
-
VBA コピーが出来ません…!
おすすめ情報