JSFiddle - React, Tailwind, and code Playground

by tsaii

HTML

<button onclick="loginModal()">點我登入帳號</button>
<hr>
<button onclick="postModal()">點我新增貼文</button>


<div class="modal" id='content'>
  <div class="login">
    <div>帳號:<input type="text"></div>
    <div>密碼:<input type="password"></div>
    <hr>
    <button class="btn-close">關閉</button>
  </div>
</div>
<div class="modal" id="post-modal">
  <div class="login">
    <div>標題:<input type="text"></div>
    <div>內文:<textarea></textarea></div>
    <button class="btn-close">關閉</button>
  </div>
</div>

CSS

* {
  box-sizing: border-box;
}

/* .login-modal {
  display: none;
  position: fixed;
  z-index: 1;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  background-color: rgb(0, 0, 0);
  background-color: rgba(0, 0, 0, 0.4);
} */

#content,#post-modal {
  display: none;
  position: fixed;
  z-index: 1;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  background-color: rgb(0, 0, 0);
  background-color: rgba(0, 0, 0, 0.4);
  text-align: center;
}

.login {
  background-color: #F8E7E7;
  margin: 100px auto;
  padding: 20px;
  border: 1px solid #888;
  width: 300px;
}
.btn-close{
  margin: 5px;
  background-color: #E19898;
  border: none;
  padding: 5px;
  border-radius: 3px;
}

JavaScript

let btn = document.querySelectorAll('.btn-close')


function loginModal() {
  let login = document.querySelector('#content');
  login.style.display = 'block';
}

function postModal() {
  let post = document.querySelector('#post-modal');
  post.style.display = 'block';
}

for (let closebtn of btn) {
  closebtn.onclick = remove
}

function remove() {
  event.target.closest('.modal').style.display = 'none'
}

window.onclick = function(event) {
  let modal = document.querySelector('#content')
  let modal1 = document.querySelector('#post-modal')
  if (event.target == modal) {
    modal.style.display = "none";
  } else if (event.target == modal1) {
    modal1.style.display = "none"
  }
}