今回は、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を使って、基本的なモーダルウィンドウを作る方法について解説しました。
まずは基本的な動作を実装できるようにして、徐々に応用的な動作も実装できるようにしていきましょう。
最後までお読みいただきありがとうございました!