【jQuery】モーダル内モーダルウィンドウを作ってみる
私個人的によく使う、jQueryのプラグイン「Magnific Popup」と、たまに見かける「Colorbox」を使って、モーダルウィンドウ内モーダルウィンドウを作ってみます。
まずは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によるモーダル内モーダルウィンドウです。
こちらも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によるモーダルウィンドウです。
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によるモーダルウィンドウです。
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を設置すれば、モーダルウィンドウ内にモーダルウィンドウを作ることができました。
参考になれば幸いです。