現在右下のボタンがクリックされた時にモーダル画面が表示されるようにしているのですが、モーダル以外の場所をクリックした場合にモーダル画面を閉じたいのですが、jqueryを使用せずにやる事は可能でしょうか?
html
1<div>右下のボタンでフォームを表示</div> 2 3<!-- ── モーダルフォーム|表示ボタン ── --> 4<button id="mobutton" onclick=" 5document.moform.classList.toggle( 'open' ); 6document.getElementById( 'mobutton' ).classList.toggle( 'open' ); 7"></button> 8 9<!-- ── モーダルフォーム|フォーム ── --> 10<form name="moform"> 11<div>モーダルフォーム: <input></div> 12</form>
css
1/* ── モーダルフォーム|表示ボタン ── */ 2#mobutton { 3position: fixed; right: 8px; bottom: 8px; z-index: 9999; 4display: block; 5box-sizing: border-box; 6width: 32px; height: 32px; 7border-radius: 50%; 8border: solid 4px #f69; 9outline: none; 10background: #fff center center / cover 11url( "data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32' width='32' height='32'><polyline stroke-width='4' stroke-linecap='round' stroke='%23f69' fill='none' points='8,14 16,6 24,14' /><line stroke-width='4' stroke-linecap='round' stroke='%23f69' fill='none' x1='16' y1='6' x2='16' y2='24' /></svg>" ); 12cursor: pointer; 13transition: 0.2s; 14} 15#mobutton.open { transform: rotate( 180deg ) } 16 17/* ── モーダルフォーム|非表示 ── */ 18[ name="moform" ] { 19position: fixed; left: 0px; top: 0px; z-index: 999; 20width: 100vw; height: 100vh; 21background: rgba( 0, 0, 0, 0.5 ); 22opacity: 0; 23transition: 0.2s; 24pointer-events: none; 25} 26[ name="moform" ] > div { 27position: absolute; left: 0px; top: 100%; 28box-sizing: border-box; 29width: 100%; 30min-height: 200px; 31padding: 20px; 32border-radius: 8px 8px 0px 0px; 33background: #fff; 34transition: 0.2s; 35} 36 37/* ── モーダルフォーム|表示 ── */ 38[ name="moform" ].open { opacity: 1; pointer-events: auto } 39[ name="moform" ].open > div { transform: translateY( -100% ) }
回答2件
あなたの回答
tips
プレビュー