
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を探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
mainメソッドのthrows節で設定...
-
エクセルVBAで、条件に一致する...
-
配列のメソッド
-
0歳児の指しゃぶりに関して
-
javascriptからjavaを呼び出したい
-
引数は省略できません。とのコ...
-
DataGridViewでセルクリックイ...
-
ヘルパーメソッドとはなんですか?
-
boolean型のフィールドとゲッタ...
-
VBA/FIND関数を使っての先頭文...
-
VBPをダブルクリックするとたま...
-
.ToStringのありなし
-
final修飾子を使っているのに、...
-
エラーの意味を
-
マインスイーパの作り方
-
エクセルVBAにおけるON TIMEメ...
-
メソッドのエラー
-
DBunitの期待値についての質問...
-
c#でC言語のstrtokに...
-
ListViewにて行追加
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
【sendkeysメソッドが動かずに...
-
mainメソッドのthrows節で設定...
-
VBA コピーが出来ません…!
-
DataGridViewでセルクリックイ...
-
コマンドプロンプト実行後に画...
-
0歳児の指しゃぶりに関して
-
エクセルVBAにおけるON TIMEメ...
-
javascriptからjavaを呼び出したい
-
配列のメソッド
-
CALLされていないメソッドを見...
-
final修飾子を使っているのに、...
-
Labelコントロールに数字を代入...
-
VBPをダブルクリックするとたま...
-
ウィンドウを最前面にできません
-
処理内容がほぼ同じメソッドの...
-
Application.Wait の参照設定
-
C#.net Define文
-
C# 演算 最大値 最小値 表現の仕方
-
Excel VBA でExcelを終了したい...
おすすめ情報