Modal 2
by marusti
HTML
<button class="open-modal" data-target="modal-1">OPEN MODAL WINDOW 1</button>
<button class="open-modal" data-target="modal-2">OPEN MODAL WINDOW 2</button>
<div id="modal-1" class="modal-window">
<h2>Modal window 1</h2>
<p>Proin rhoncus metus felis, ut tempor metus eleifend a. </p>
<p>Nam porta, quam ut elementum sollicitudin, augue nibh ornare turpis.</p>
<button class="modal-btn modal-hide">Close</button>
</div>
<div id="modal-2" class="modal-window">
<h2>Modal window 2</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. </p>
<p>Nulla egestas sed mi sed fringilla. Maecenas a finibus neque.</p>
<button class="modal-btn modal-hide">Close</button>
</div>
<div class="modal-fader"></div>
CSS
.modal-fader {
display: none;
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
width: 100%;
z-index: 99998;
background: rgba(0,0,0,0.8);
}
.modal-fader.active {
display: block;
}
.modal-window {
display: none;
position: absolute;
left: 50%;
transform: translateX(-50%);
z-index: 99999;
background: #fff;
padding: 20px;
border-radius: 5px;
font-family: sans-serif;
top: 50px;
}
.modal-window.active {
display: block;
}
.modal-window h1,
.modal-window h2,
.modal-window h3,
.modal-window h4,
.modal-window h5,
.modal-window h6 {
margin: 0;
}
.modal-btn {
background: #36a5a5;
border: none;
color: #fff;
padding: 10px 15px;
box-shadow: none;
border-radius: 3px;
text-decoration: none;
}
JavaScript
(function () {
document.querySelectorAll(".open-modal").forEach(function (trigger) {
trigger.addEventListener("click", function () {
hideAllModalWindows();
showModalWindow(this);
});
});
document.querySelectorAll(".modal-hide").forEach(function (closeBtn) {
closeBtn.addEventListener("click", function () {
hideAllModalWindows();
});
});
document.querySelector(".modal-fader").addEventListener("click", function () {
hideAllModalWindows();
});
})();
function showModalWindow (buttonEl) {
var modalTarget = "#" + buttonEl.getAttribute("data-target");
document.querySelector(".modal-fader").className += " active";
document.querySelector(modalTarget).className += " active";
}
function hideAllModalWindows () {
var modalFader = document.querySelector(".modal-fader");
var modalWindows = document.querySelectorAll(".modal-window");
if(modalFader.className.indexOf("active") !== -1) {
modalFader.className = modalFader.className.replace("active", "");
}
modalWindows.forEach(function (modalWindow) {
if(modalWindow.className.indexOf("active") !== -1) {
modalWindow.className = modalWindow.className.replace("active", "");
}
});
}