• TOP
  • NOTES
  • 【JQuery】モーダルウィンドウの作り方!コピペOKなサンプルコード付き

NOTES

【JQuery】モーダルウィンドウの作り方!コピペOKなサンプルコード付き

モーダルウィンドウの基本知識や、実践で使えるサンプルコードを掲載しています。

【JQuery】モーダルウィンドウの作り方!コピペOKなサンプルコード付き

このエントリーをはてなブックマークに追加

Webサイトやアプリによく組み込まれるUIのひとつである「モーダルウィンドウ」。
普段ユーザーとして触れる機会も多いものですが、モーダルウィンドウとは正確には何か、具体的にどのような場面で使用すると効果的なのかなど、詳しく知りたいという人も多いのではないでしょうか。

本記事では、そんなモーダルウィンドウの基礎的な知識から、モーダルウィンドウの作り方、コピペで使用できるサンプルコードまで掲載しています。
是非、参考にしてみてください。

モーダルウィンドウとは?

モーダルウィンドウとは、特定の操作を行なわないと他の画面を操作することができないウィンドウのことです。
元画面の上に別の画面をオーバーレイで表示され、ユーザーへ強制的に確認や操作を促すことができます。
情報を確実に伝えたい場合や特定の操作をさせたい場合には効果的ですが、ユーザーの操作を強制的に制御するため実装する際は注意が必要です。

JQueryを使ったモーダルウィンドウの作り方

< HTML・CSSでモーダルウィンドウのパーツを実装する >

モーダルウィンドウに必要なパーツは以下の通りです。
1. クリックしてモーダルウィンドウを表示させるためのボタン
2. オーバーレイ (モーダルウィンドウの背景)※1の上に重ねる
3. モーダルウィンドウ本体※2の上に重ねる
4. モーダルウィンドウを閉じるボタン

< JQueryでモーダルウィンドウの動きを実装する >

モーダルウィンドウの動きは以下の通りです。
1. ボタンをクリックしたら、モーダルウィンドウとオーバーレイをフェードインで表示する
※モーダルウィンドウとオーバーレイは[display: none;]で非表示にしておきます
2.モーダルが表示されている間、bodyのスクロールを無効にする
3. モーダル内のボタンをクリックorオーバーレイをクリックしたら、モーダルウィンドウとオーバーレイをフェードアウトで非表示にする

プラグインを使って手軽にモーダルウィンドウを実装する

モーダルウィンドウを手軽に実装できるプラグインを紹介します。
実際にモーダルウィンドウを実装しようとすると、オーバーレイを作成したり、クローズボタンを作成したり、裏側のコンテンツをスクロールさせないようにしたり等、細かい構築や配慮が必要で結構手間がかかります。
そんな手間がかかるUIですが、プラグインを使用して作成することでアクセシビリティの確保されたモーダルウィンドウを作成することができます。

< Modaal >

Modaalは、単純なテキスト表示だけでなく、画像ギャラリーや動画の表示、フォームの送信など様々なコンテンツをモーダルウィンドウとして扱うことができます。
ModaalはjQuery依存のプラグインで、使用するにはjQueryの読み込みが必須になります。
すでにサイト内でjQueryを使用している場合に、おすすめのプラグインです。
本記事のサンプルコードでもModaalプラグインを使用しています。
https://humaan.com/modaal/

< Micromodal.js >

Micromodal.jsは1.9kbと非常に軽量で、素のJavaScriptで作られています。
シンプルな挙動を実装することができ、デフォルトのスタイルもないためCSSでのカスタマイズもしやすくなっています。
Micromodal.jsはjQueryに依存しないため、モーダルウィンドウのためにjQuery読み込むのは避けたい人におすすめのプラグインです。
https://micromodal.vercel.app/

コピペで使えるモーダルウィンドウのサンプルコード

< クリックするとモーダルウィンドウが表示される >

要素をクリックするとモーダルウィンドウが表示されます。
画像も設置することができ、data-groupに同じ名前を設定するとグループ化されて表示します。
Modaalプラグインでは、「画面外をクリックしてモーダルウィンドウを閉じる」仕様がデフォルトで設定されています。「画面外をクリックしてもモーダルウィンドウを閉じない」仕様にするには、オプション[overlay_close:false]を設定してください。

< ページを開いたらすぐモーダルウィンドウが表示される >

ページを開いたらすぐモーダルウィンドウが表示されます。
Modaalのオプションを「start_open: true」にするだけで簡単に実現できます。

< 任意の位置までスクロールするとモーダルウィンドウが表示される >

Area3までスクロールするとモーダルウィンドウが表示されます。
スクロールイベントでのモーダルウィンドウ表示は、1回だけになるよう設定しています。

< HTMLとCSSのみでモーダルウィンドウを実装する >

HTMLのpopover属性を使用すると、JavaScriptなしでモーダルウィンドウを実装することができます。
popover属性とはHTML要素をポップオーバー要素にする属性です。2023年5月にChrome 114がリリースされた際にPopover APIがサポートされ、HTMLのpopover属性が使用できるようになりました。

2023年7月現在、Google ChromeやMicrosoft Edge、Safari等、ある程度の主要ブラウザはサポートされているようです。Firefoxはサポートされていないようですのでご注意ください。
サポートされているWebブラウザの詳細は、以下のサイトよりご確認ください。
プロパティ別ブラウザ対応表「Can I use」

モーダルウィンドウを実装するメリット・デメリット

モーダルウィンドウの特徴から、以下のようなメリット・デメリットがあります。

ユーザーに確実に情報を伝えることができる

元画面の上に別の画面が表示されるウィンドウの注目度に加え、操作が制限されることで、伝えたい情報をユーザーに確実に認知させることが可能です。

ユーザーに行ってほしい操作を限定できる

指定された動作を完了するまで他の操作ができない特性から、最後まで目的の操作を行ってほしい場合にも活用できます。
例えば、ログイン画面や通販サイトの購入画面などです。

多用するとユーザーへストレスを与える

モーダルウィンドウを頻繁に表示すると、メインの画面が見られないことでユーザーのストレスにつながります。また、モーダルウィンドウを表示する度にユーザーは手を止めなければいけません。
さらに、モーダルウィンドウを閉じて元のページに戻っても、読んでいた場所が分からなくなることがあります。そのため、ユーザーの作業効率の低下につながってしまいます。

ユーザーが離脱してしまう恐れがある

モーダルウィンドウが表示されたら、閉じるボタンを押す、画面内にある選択肢を選択する、文字入力をするなどの操作が必要になります。
そのため、モーダルウィンドウを消す方法が分からないユーザーは、そのままページを離脱してしまうことがあります。

まとめ

モーダルウィンドウは重要である情報の確実な伝達や特定の操作の促進には有効ですが、過度の使用はユーザーにストレスを与えたり、離脱を招いたりする可能性があります。
また、実装する際も配慮すべき点が多くあり、モーダルウィンドウは難しいUIといえます。
効果的に活用するためにも使用場面と実装方法の両方を慎重に考慮して、モーダルウィンドウを作成していきましょう。

DXO株式会社では一緒に働く
仲間を募集しています!

DXO株式会社ではWeb開発エンジニア、Webディレクター、Webデザイナーなど様々な職種で一緒に働く仲間を募集しています。
募集要項・福利厚生など、詳しくはDXO株式会社採用サイトをご覧ください。

最大50万円のお祝い金を進呈中!

詳しくはこちら

関連記事