JSFiddle - React, Tailwind, and code Playground
by 81ue_lan
HTML
<div class="container">
<div class="btn-box">
<button class="btn-1" onclick="loginModal()"><span>點我登入帳號</span></button>
<button class="btn-1" onclick="postModal()"><span>點我新增貼文</span></button>
</div>
<div class="modal login-modal" id="login-modal">
<div class="modal-content">
<h3>LOGIN</h3>
<div class="account-box">
<label for="userAccount">帳號</label>
<input type="text" name="userAccount">
</div>
<div class="password-box">
<label for="userPassword">密碼</label>
<input type="password" name="userPassword">
</div>
<button class="btn">登入</button>
<button class="btn-close">x</button>
</div>
</div>
<div class="modal post-modal" id="post-modal">
<div class="modal-content">
<h3>I am thinking about...</h3>
<div class="post-title-box">
<label for="post-title">標題</label>
<input type="text" name="post-title">
</div>
<div class="caption-box">
<label for="caption">內文</label>
<textarea name="caption"></textarea>
</div>
<button class="btn">發布</button>
<button class="btn-close">x</button>
</div>
</div>
</div>
CSS
*{
margin: 0;
padding: 0;
}
body{
background: #D3CCE3; /* fallback for old browsers */
background: -webkit-linear-gradient(to right, #E9E4F0, #D3CCE3); /* Chrome 10-25, Safari 5.1-6 */
background: linear-gradient(to right, #E9E4F0, #D3CCE3); /* W3C, IE 10+/ Edge, Firefox 16+, Chrome 26+, Opera 12+, Safari 7+ */
}
.btn-1,
.btn-1 *,
.btn-1::after,
.btn-1::before,
.btn-1::after,
.btn-1::before {
border: 0 solid;
box-sizing: border-box;
}
.btn-1 {
-webkit-tap-highlight-color: transparent;
background-color: #000;
background-image: none;
color: #fff;
cursor: pointer;
font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont,
Segoe UI, Roboto, Helvetica Neue, Arial, Noto Sans, sans-serif,
Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji;
font-size: 100%;
font-weight: 900;
line-height: 1.5;
margin: 0;
padding: 0;
text-transform: uppercase;
}
.btn-1:disabled {
cursor: default;
}
.btn-1:-moz-focusring {
outline: auto;
}
.btn-1 svg {
display: block;
}
.btn-1 [hidden] {
display: none;
}
.btn-1 {
border-radius: 99rem;
border-width: 2px;
padding: 0.5rem 1.5rem;
}
.btn-1:hover {
color: #999;
}
input{
padding: 10px;
border: none;
border-bottom: 1px solid #333;
background-color: transparent;
}
input:focus,
textarea:focus{
outline: none;
}
textarea{
resize: none;
}
.container{
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
width: 500px;
height: 100vh;
margin: auto;
}
.modal{
display: none;
position: fixed;
justify-content: center;
width: 100%;
height: 100%;
top: 0;
left: 0;
background-color: rgba(0,0,0,0.3);
}
.modal-content{
position: relative;
display: flex;
flex-direction: column;
align-items: center;
width: 296px;
margin: auto;
padding: 40px 0;
border-right: 2px solid #333;
border-left: 2px solid #333;
background-color: #D9E6F5;
}
.modal-content::before,
.modal-content::after{
...
JavaScript
const closeBtns = document.querySelectorAll('.btn-close');
function loginModal(){
let loginModal = document.querySelector('.login-modal');
loginModal.style.display = 'flex';
}
function postModal(){
let postModal = document.querySelector('.post-modal');
postModal.style.display = 'flex';
}
function close(){
event.target.closest('.modal').style.display = "none";
}
for(var btn of closeBtns){
btn.onclick = close;
}