Modal Test 1
by marusti
HTML
<div class="container">
<a data-modal="modal-one">Open Modal</a>
</div>
<div class="modal" id="modal-one">
<div class="modal-bg modal-exit"></div>
<div class="modal-container">
<h1>Amazing Modal</h1>
<h2>Pure Vanilla JavaScript</h2>
<button class="modal-close modal-exit">X</button>
</div>
</div>
CSS
* {
margin: 0;
padding: 0;
}
.container {
display: flex;
}
.container a {
padding: 10px;
background: gray;
color: #fff;
font-size: 16px;
border-radius: 5px;
cursor: pointer;
}
.modal {
position: fixed;
width: 100vw;
height: 100vh;
opacity: 0;
visibility: hidden;
transition: all 0.3s ease;
top: 0;
left: 0;
display: flex;
align-items: center;
justify-content: center;
}
.modal.open {
visibility: visible;
opacity: 1;
transition-delay: 0s;
}
.modal-bg {
position: absolute;
background: lightgray;
width: 100%;
height: 100%;
}
.modal-container {
border-radius: 10px;
background: #fff;
position: relative;
padding: 30px;
}
.modal-close {
position: absolute;
right: 15px;
top: 15px;
outline: none;
appearance: none;
color: red;
background: none;
border: 0px;
font-weight: bold;
cursor: pointer;
}
JavaScript
const modals = document.querySelectorAll("[data-modal]");
modals.forEach(function (trigger) {
trigger.addEventListener("click", function (event) {
event.preventDefault();
const modal = document.getElementById(trigger.dataset.modal);
modal.classList.add("open");
const exits = modal.querySelectorAll(".modal-exit");
exits.forEach(function (exit) {
exit.addEventListener("click", function (event) {
event.preventDefault();
modal.classList.remove("open");
});
});
});
});