HTMLでモーダルウィンドウを作成する方法
基本的なモーダルウィンドウの作成
モーダルウィンドウは、画面上にオーバーレイを表示して、ユーザーに注意を引きたい内容を提供するために使われます。まずは、基本的なモーダルウィンドウを作成する方法を見てみましょう。
以下は、シンプルなモーダルウィンドウのHTMLコード例です。
<button id="openModal">モーダルを開く</button> <div id="myModal" class="modal"> <div class="modal-content"> <span class="close">×</span> <p>これは基本的なモーダルウィンドウです。</p> </div> </div> <script> var modal = document.getElementById("myModal"); var btn = document.getElementById("openModal"); var span = document.getElementsByClassName("close")[0]; btn.onclick = function() { modal.style.display = "block"; } span.onclick = function() { modal.style.display = "none"; } window.onclick = function(event) { if (event.target == modal) { modal.style.display = "none"; } } </script>
この例では、ボタンをクリックするとモーダルウィンドウが表示され、ウィンドウの×ボタンをクリックするか、モーダルウィンドウの外をクリックすると閉じます。
閉じるボタンを含むモーダル
モーダルウィンドウに閉じるボタンを追加することで、ユーザーが簡単にモーダルを閉じることができます。以下はその実装例です。
<button id="openModal2">閉じるボタンを含むモーダルを開く</button> <div id="myModal2" class="modal"> <div class="modal-content"> <span class="close2">×</span> <p>このモーダルには閉じるボタンがあります。</p> </div> </div> <script> var modal2 = document.getElementById("myModal2"); var btn2 = document.getElementById("openModal2"); var span2 = document.getElementsByClassName("close2")[0]; btn2.onclick = function() { modal2.style.display = "block"; } span2.onclick = function() { modal2.style.display = "none"; } window.onclick = function(event) { if (event.target == modal2) { modal2.style.display = "none"; } } </script>
このコードでは、モーダルに閉じるボタンを追加し、モーダル内の×ボタンをクリックするとモーダルが閉じるようにしています。
アニメーション付きモーダル
モーダルウィンドウにアニメーションを追加すると、ユーザー体験が向上します。以下は、フェードイン・フェードアウトのアニメーションを使用したモーダルの例です。
<button id="openModal3">アニメーション付きモーダルを開く</button> <div id="myModal3" class="modal"> <div class="modal-content"> <span class="close3">×</span> <p>アニメーション付きのモーダルです。</p> </div> </div> <style> .modal { display: none; position: fixed; z-index: 1; padding-top: 100px; left: 0; top: 0; width: 100%; height: 100%; overflow: auto; background-color: rgba(0,0,0,0.4); opacity: 0; transition: opacity 0.5s ease; } .modal-content { background-color: #fff; margin: 5% auto; padding: 20px; border: 1px solid #888; width: 80%; } .modal.show { display: block; opacity: 1; } </style> <script> var modal3 = document.getElementById("myModal3"); var btn3 = document.getElementById("openModal3"); var span3 = document.getElementsByClassName("close3")[0]; btn3.onclick = function() { modal3.classList.add("show"); } span3.onclick = function() { modal3.classList.remove("show"); } window.onclick = function(event) { if (event.target == modal3) { modal3.classList.remove("show"); } } </script>
このコードでは、モーダルが表示される際にフェードインし、閉じる際にはフェードアウトします。モーダルに対してclassを追加・削除することでアニメーションを制御しています。
フォームを含むモーダル
モーダルウィンドウ内にフォームを含めることもできます。以下は、モーダル内に簡単な入力フォームを追加した例です。
<button id="openModal4">フォーム付きモーダルを開く</button> <div id="myModal4" class="modal"> <div class="modal-content"> <span class="close4">×</span> <h2>お問い合わせフォーム</h2> <form> <label for="name">名前</label> <input type="text" id="name" name="name"><br> <label for="email">メール</label> <input type="email" id="email" name="email"><br> <input type="submit" value="送信"> </form> </div> </div> <script> var modal4 = document.getElementById("myModal4"); var btn4 = document.getElementById("openModal4"); var span4 = document.getElementsByClassName("close4")[0]; btn4.onclick = function() { modal4.style.display = "block"; } span4.onclick = function() { modal4.style.display = "none"; } window.onclick = function(event) { if (event.target == modal4) { modal4.style.display = "none"; } } </script>
このモーダルには、名前とメールアドレスを入力するフォームが含まれています。フォームの内容を送信するためのボタンも追加されています。