JavaScript

javascriptでモーダルウィンドウ


初めに

javascriptでモーダルウィンドウのやり方がわかったので忘備録として


とりあえず

モーダルウィンドウっていってもすることはボタンを押されたりしたらモーダルウィンドウを表示するだけ、要はdisplayをnoneにしたりblockにしたりするだけで実装できる。


実装していく

モーダルウィンドウの部分を作っていく

<div id="modal" class="modal">

<div class="modal-content">
<div class="modal-body">
<h1>hello</h1>
</div>
</div>
</div>

.modal {

display: none;
position: fixed;
z-index: 1;
left: 0;
top: 0;
height: 100%;
width: 100%;
overflow: auto;
background-color: rgba(0,0,0,0.5);
}

.modal-content{
background-color: white;
width: 500px;
margin: 40% auto;
}

みたいにする

表示の確認をしたい場合はdisplay:noneをけしてみてください。

こんな感じに表示されると思います。

modal.png

それで次にボタンを作ります。

<input type="button" id="btn" value='click me'>

そしてjsでこのボタンが押されたときにmodalのdisplayをblockにします。

jsファイルに

var btn = document.getElementById('btn');

var modal = document.getElementById('modal');

btn.addEventListener('click', function() {
modal.style.display = 'none';
}

こんな感じに書けばモーダルがない状態でボタンを押すとモーダルウィンドウが出てくると思います。

モーダルを消す機能を追加するために

さっきのhtmlを

    <div id="modal" class="modal">

<div class="modal-content">
<div class="modal-body">
<h1>hello</h1>
<input type="button" id="closeBtn" value="close"> <= 追加
</div>
</div>
</div>

こうします。

このcloseボタンが押された時にmodalのdisplayをnoneにします。

jsファイルに

var closeBtn = document.getElementById('closeBtn');

closeBtn.addEventListener('click', function() {
modal.style.display = 'none';
})

と書き加えます。

これでモーダルウィンドウの表示、非表示ができるようになりました。

またボタンではなく外側の黒い部分を押してもモーダルが消えるようにしたい場合は


window.addEventListener('click', function(e) {
if (e.target == modal) {
modal.style.display = 'none';
}
});

お加えればOK

後はデザインを適当に加えれば完成です。