前提・実現したいこと
CodeSandBox
上記のデモは「モーダルを開く」ボタンを押すとモーダルが表示されます。
モーダル領域以外をクリックすると、モーダルを閉じます。
モーダルの開閉はjQuery
を使用しています。
現状、モーダルの後面にモーダルを閉じるボタンがあるので、閉じるボタンをモーダルよりも前面に配置したいです。
該当のソースコード
html
1<button id="openModal">モーダルを開く</button> 2<aside id="modal_background" class="close"> 3 <button> 4 閉じる 5 </button> 6</aside> 7<aside id="modal" class="close"> 8 <div class="modal_contents"> 9 <h2>モーダルの中</h2> 10 </div> 11</aside>
css
1* { 2 box-sizing: border-box; 3} 4 5body { 6 background-color: #aaa; 7 color: white; 8} 9 10button { 11 cursor: pointer; 12} 13 14#modal_background { 15 position: fixed; 16 top: 0; 17 left: 0; 18 width: 100vw; 19 height: 100vh; 20 background-color: rgba(0, 0, 0, 0.6); 21 opacity: 1; 22 transition: opacity 0.3s; 23} 24 25#modal_background.close { 26 opacity: 0; 27 pointer-events: none; 28} 29 30#modal_background button { 31 position: absolute; 32 top: 16px; 33 right: 16px; 34 padding: 8px; 35 color: white; 36 background-color: black; 37 z-index: 1; 38} 39 40#modal { 41 position: fixed; 42 top: 0; 43 left: 0; 44 width: 100vw; 45 height: 100vh; 46 display: flex; 47 align-items: center; 48 justify-content: center; 49 padding: 16px; 50 transform: scale(1); 51 transition: transform 0.3s; 52} 53 54#modal.close { 55 transform: scale(0); 56} 57 58.modal_contents { 59 background-color: rgba(255, 255, 255, 0.8); 60 padding: 16px; 61 color: black; 62 min-width: 90%; 63 min-height: 90%; 64}
javascirpt
1$(function () { 2 const closeModal = (e) => { 3 if (e.target.closest(".modal_contents")) return; 4 $("#modal").addClass("close"); 5 $("#modal_background").addClass("close"); 6 $("#modal").off("click"); 7 }; 8 9 $("#openModal").click(() => { 10 $("#modal_background").removeClass("close"); 11 $("#modal").removeClass("close"); 12 $("#modal").on("click", closeModal); 13 }); 14});
試したこと
閉じるボタンにz-index: 1
を設定してみましたが効果はありませんでした。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。