今回は、jQueryを使って、基本的なモーダルウィンドウを作る方法について、解説していきます。
モーダルウィンドウとは
モーダルウィンドウ(モーダル)とは、親ウィンドウに対する子ウィンドウのことです。
一旦モーダルウィンドウを開くと、「閉じる」ボタンを押すなど何らかの操作が完了するまで開き続け、その間親ウィンドウの操作ができなくなります。
ユーザーにある特定の操作をさせたり、確認してもらいたいときにモーダルウィンドウは効力を発揮します。
モーダルウィンドウの実装方法
実装サンプル
See the Pen
【jQuery】モーダルウィンドウ by 田村翔 (@geqvzwon-the-typescripter)
on CodePen.
基本的なモーダルウィンドウのサンプルをご用意しました。
実際にボタンをクリックして、モーダルウィンドウの動作を確認してみてください。
モーダルウィンドウを閉じる際、ボタンではなく外側のグレーの部分をクリックしても閉じるようになっています。
codepenの左上にあるHTML,CSS,JSのタブをクリックすると、それぞれのソースコードを見ることができます。
HTML
<!-- モーダルを開いた時の外側のレイヤー -->
<div class="over-lay"></div>
<div class="wrapper">
<!-- モーダルを開くボタン -->
<button class="modal-open-btn">
モーダルウィンドウを開く
</button>
<!-- モーダルウィンドウ -->
<div class="modal">
<h2>モーダルウィンドウです。</h2>
<p>ここにはコンテンツが入ります。</p>
<button class="modal-close-btn">閉じる</button>
</div>
</div>
モーダルウィンドウを実装するために、まずは下記3つのブロックを用意します。
その後、CSSで装飾を行います。
- モーダルを開くボタン
- モーダルウィンドウ本体
- モーダルを開いた時の外側のレイヤー
CSS
/* モーダルを開いた時の外側のレイヤー */
.over-lay {
content: '';
display: none;
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: #999;
opacity: 0.7;
}
/* モーダルウィンドウ */
.modal {
display: none;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);//topとleftの指定と併せて、上下左右真ん中にします。
max-width: 400px;
width: 80%;
padding: 30px;
background-color: #fff;
}
/* モーダルを開いたとき */
.modal.active,
.over-lay.active {
display: block;
}
最初モーダルウィンドウとレイヤーは非表示にします。
クリックイベントによって、それぞれにactiveクラスを付与したり外したりすることによって、表示非表示を切り替えます。
activeクラスの付け外しはjQueryで行います。
jQuery
$(function() {
// モーダルウィンドウを開くとき
$('.modal-open-btn').on(
'click', function() {
$('.modal, .over-lay').addClass('active');
});
// モーダルウィンドウを閉じるとき
$('.modal-close-btn, .over-lay').on(
'click', function() {
$('.modal, .over-lay').removeClass('active');
});
});
jQueryに書くコードはとてもシンプルです。
ボタンやレイヤーをクリックした際に、クラスを付けたり外したりします。
これだけで、簡単なモーダルウィンドウを実装することができます。
もう一度サンプルを見て、動作を確認してみてください。
See the Pen
【jQuery】モーダルウィンドウ by 田村翔 (@geqvzwon-the-typescripter)
on CodePen.
まとめ
以上、jQueryを使って、基本的なモーダルウィンドウを作る方法について解説しました。
まずは基本的な動作を実装できるようにして、徐々に応用的な動作も実装できるようにしていきましょう。
最後までお読みいただきありがとうございました!


