フロントの人の雑多メモ

【jQuery】モーダル内モーダルウィンドウを作ってみる

【jQuery】モーダル内モーダルウィンドウを作ってみる

私個人的によく使う、jQueryのプラグイン「Magnific Popup」と、たまに見かける「Colorbox」を使って、モーダルウィンドウ内モーダルウィンドウを作ってみます。

まずはMagnific Popupだけでモーダル内モーダルを作ってみる

Magnific Popupだけで多重モーダルウィンドウを作ってみます。

それがこちら

Magnific Popupモーダルを開く

Magnific Popupによるモーダルウィンドウです。

Magnific Popupモーダル内モーダルを開く

Magnific Popupによるモーダル内モーダルウィンドウです。

1つ目のモーダルを開いて、2つ目のモーダルを開いて閉じると、すべてのモーダルが閉じられてしまいますね。 (当たり前...ですかね。)

ソースコードを開く

最初のボタンと、1つ目のモーダル、2つ目のモーダルを並べています。

<p><a href="#mfp_modal" class="mfp">モーダルを開く</a></p>

<div id="mfp_modal" class="mfp_modal mfp-hide">
	<p>モーダルウィンドウです。</p>
	<p><a href="#mfp_modal2" class="mfp">Magnific Popupによるモーダル内モーダルを開く</a></p>
</div>

<div id="mfp_modal2" class="mfp_modal mfp-hide">
	<p>Magnific Popupによるモーダル内モーダルウィンドウです。</p>
</div>

JSはMagnific Popupだけです。

$(".mfp").magnificPopup({
	type: "inline"
});

次にColorboxだけでモーダル内モーダルを作ってみる

次に、Colorboxだけで多重モーダルウィンドウを作ってみます。

それがこちら

Colorboxモーダルを開く

Colorboxによるモーダルウィンドウです。

Colorboxモーダル内モーダルを開く

Colorboxによるモーダル内モーダルウィンドウです。

こちらもMagnific Popupと同様、1つ目を開いて2つ目を開いて閉じると、すべて閉じてしまいます。

ソースコードを開く

最初のボタンと、1つ目のモーダル、2つ目のモーダルを並べています。

<p><a href="#cb_modal1" class="cb_modal">Colorboxモーダルを開く</a></p>

<div class="cb_modal_wrap">
	<div id="cb_modal1" class="colorbox_modal">
		<p>Colorboxによるモーダルウィンドウです。</p>
		<p><a href="#cb_modal2" class="cb_modal">Colorboxモーダル内モーダルを開く</a></p>
	</div>
</div>

<div class="cb_modal_wrap">
	<div id="colorbox2" class="colorbox_modal">
		<p>Colorboxによるモーダル内モーダルウィンドウです。</p>
	</div>
</div>

JS

$(".cb_modal").colorbox({
	inline: true
});

【結論】Magnific PopupとColorboxを組み合わせてみる

1つのプラグインだけだと上手くいかないので、Magnific PopupとColorboxを組み合わせて多重モーダルウィンドウを作ってみます。

まず、1つ目がMagnific Popup、2つ目がColorboxのパターン。

それがこちら

Magnific Popupモーダルを開く

Magnific Popupによるモーダルウィンドウです。

Colorboxモーダル内モーダルを開く

Colorboxによるモーダル内モーダルウィンドウです。

うまく動いていると思います!まさに理想的!

最初のボタンと、1つ目のMagnific Popupモーダル、2つ目のColorboxモーダルを並べています。

<p><a href="#mfp_modal3" class="mfp">Magnific Popupモーダルを開く</a></p>

<div id="mfp_modal3" class="mfp_modal mfp-hide">
	<p>Magnific Popupによるモーダルウィンドウです。</p>
	<p><a href="#cb_modal3" class="cb_modal">Colorboxモーダル内モーダルを開く</a></p>
</div>

<div class="cb_modal_wrap">
	<div id="cb_modal3" class="colorbox_modal">
		<p>Colorboxによるモーダル内モーダルウィンドウです。</p>
	</div>
</div>

JSはMagnific PopupとColorboxの両方実行しています。

$(".mfp").magnificPopup({
	type: "inline",
	preloader: false
});

$(".cb_modal").colorbox({
	inline: true
});

1つ目がColorbox、2つ目がMagnific Popupのパターンでやってみます。

それがこちら

Colorboxモーダルを開く

Colorboxによるモーダルウィンドウです。

Magnific Popupモーダル内モーダルを開く

Magnific Popupによるモーダル内モーダルウィンドウです。

こちらは、2つ目のMagnific Popupモーダルが裏側に表示されてしまいます。

CSSを直せばいいだけですが、特に理由がなければ Magnific Popupの中にColorbox にしたほうがよさそうです。

ソースコードを開く

最初のボタンと、1つ目のMagnific Popupモーダル、2つ目のColorboxモーダルを並べています。

<div id="mfp_modal4" class="mfp_modal mfp-hide">
	<p>Magnific Popupによるモーダル内モーダルウィンドウです。</p>
</div>

<p><a href="#cb_modal4" class="cb_modal">Colorboxモーダルを開く</a></p>

<div class="cb_modal_wrap">
	<div id="cb_modal4" class="colorbox_modal">
		<p>Colorboxによるモーダルウィンドウです。</p>
		<p><a href="#mfp_modal4" class="mfp">Magnific Popupモーダル内モーダルを開く</a></p>
	</div>
</div>

<div id="mfp_modal4" class="mfp_modal mfp-hide">
	<p>Magnific Popupによるモーダル内モーダルウィンドウです。</p>
</div>

JSはMagnific PopupとColorbox両方

$(".mfp").magnificPopup({
	type: "inline",
	preloader: false
});

$(".cb_modal").colorbox({
	inline: true
});

プラグインの相性などもあると思いますが、Magnific Popupの中にColorboxを設置すれば、モーダルウィンドウ内にモーダルウィンドウを作ることができました。

参考になれば幸いです。

コメント

内容を確認の上、個人情報などは省いて掲載させていただきます。

直接送信されます。確認の上、「送信」してください。

シェア

Twitterでシェア Facebookでシェア LINEでシェア はてなブックマークでシェア