Skip to content

Instantly share code, notes, and snippets.

@rustam-swe
Created November 18, 2019 06:00
Show Gist options
  • Save rustam-swe/89f7bd41949f5a2574f9cf4d9ed0a865 to your computer and use it in GitHub Desktop.
Save rustam-swe/89f7bd41949f5a2574f9cf4d9ed0a865 to your computer and use it in GitHub Desktop.
Pure JS Modal
<div>
<button id="button" class="btn" type="button">Show Dialog</button>
<div class="dialog">
<div class="modal-md">
<h1>
Pure JS Dialog
<span class="close">×</span>
</h1>
<div class="modal-content">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi eu interdum diam. Donec interdum porttitor risus non bibendum. Maecenas sollicitudin eros in quam imperdiet placerat. Cras justo purus, rhoncus nec lobortis ut, iaculis vel ipsum. Donec dignissim arcu nec elit faucibus condimentum. Donec facilisis consectetur enim sit amet varius. Pellentesque justo dui, sodales quis luctus a, iaculis eget mauris. Aliquam dapibus, ante quis fringilla feugiat, mauris risus condimentum massa, at elementum libero quam ac ligula. Pellentesque at rhoncus dolor. Duis porttitor nibh ut lobortis aliquam. Nullam eu dolor venenatis mauris placerat tristique eget id dolor. Quisque blandit adipiscing erat vitae dapibus. Nulla aliquam magna nec elementum tincidunt.
<button type="button" class="btn" id="close-btn">Close</button>
</div>
</div>
</div>
</div>
(function () {
const button = document.getElementById('button');
const dialog = document.getElementsByClassName('dialog')[0];
const modalCloseBtn = document.getElementById('close-btn');
const closeBtn = document.getElementsByClassName('close')[0];
function toggleShowDialog () {
dialog.classList.toggle("show-dialog");
}
button.addEventListener('click', toggleShowDialog);
modalCloseBtn.addEventListener('click', toggleShowDialog);
closeBtn.addEventListener('click', toggleShowDialog);
dialog.addEventListener('click', function (e) {
if (e.target === this) {
toggleShowDialog();
}
});
})();
.btn {
min-width: 150px;
margin: 30px auto;
display: block;
padding: 15px;
text-align: center;
font-size: 16px;
color: white;
background: #264d73;
border-radius: 5px;
box-shadow: 0 2px 6px 0 rgba(220, 220, 220, 0.31);
}
.dialog {
position: fixed;
display: none;
overflow: auto;
width: 100%;
height: 100%;
top: 0;
left: 0;
z-index: 5;
&.show-dialog {
display: block;
background: rgba(#132639, .9);
.modal-md {
right: 0;
left: 0;
margin: 10% auto 50px;
max-width: 635px;
width: 100%;
background: white;
padding: 0;
z-index: 100;
border-radius: 3px;
box-shadow: 0 0 8px rgba(black, .3);
animation: dialog-scale-start .3s ease-in-out forwards;
}
}
h1 {
padding: 30px;
color: #336699;
background: #ecf2f9;
border-radius: 3px 3px 0 0;
font-size: 24px;
margin: 0;
position: relative;
.close {
position: absolute;
right: 20px;
top: 15px;
cursor: pointer;
font-size: 20px;
}
}
.modal-content {
padding: 30px;
}
}
@keyframes dialog-scale-start {
0% {
opacity: .5;
transform: scale(1.15);
}
100% {
opacity: 1;
transform: scale(1);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment