Standard CSS Modal
<a href="#" class="btn" id="modalOpen">Open Modal</a>
<div class="modal__containter">
<div class="modal hide">
<a href="#" class="modal__close"><img src="http://image.flaticon.com/icons/png/128/61/61155.png"></a>
<div class="modal__content">
<h3>This is a Modal</h3>
<p>Maybe it's for a newsletter signup. Or just to say hello. It could be for whatever really..</p>
<form>
<input type="text" placeholder="Email">
<button class="btn">Submit</button>
</form>
</div>
</div>
</div>.modal__containter {
position: relative;
&.modal__open {
overflow: hidden;
&:before {
content: '';
display: inline-block;
background: rgba(0,0,0,0.5);
position: fixed;
top: -100%;
bottom: 0;
left: -100%;
right: 0;
z-index: 0;
height: 200vh;
width: 200vw;
}
}
}
.modal {
display: block;
width: 500px;
margin: 0 auto;
position: fixed;
background: white;
top: 50%;
left: 0;
right: 0;
z-index: 1;
-webkit-box-shadow: 3px 3px 20px 0px rgba(0,0,0,0.6);
box-shadow: 3px 3px 20px 0px rgba(0,0,0,0.6);
opacity: 0;
transform: translateY(calc(-50% + 100px));
transition: opacity 0.5s ease, transform 0.6s ease;
&.visible {
opacity: 1;
transform: translateY(-50%);
transition: opacity 0.5s ease, transform 0.6s ease;
}
&.transition {
opacity: 0;
transform: translateY(calc(-50% + 100px));
transition: opacity 0.5s ease, transform 0.6s ease;
}
&.hide {
display: none;
}
}
.modal__content {
padding: 20px 90px;
}
.modal__close {
display: inline-block;
position: absolute;
top: 0;
right: 0;
height: 40px;
width: 40px;
&:after {
content: '';
display: inline-block;
height: 100%;
width: 100%;
position: fixed;
top: -100%;
bottom: 0;
left: -100%;
right: 0;
height: 200vh;
width: 200vw;
z-index: -1;
}
}$(document).ready(function(){
// Open modal on button click
$('#modalOpen').on('click', function(){
$('.modal__containter').addClass('modal__open');
setTimeout(function(){
$('.modal').removeClass('hide');
$('.modal').addClass('transition');
});
setTimeout(function(){
$('.modal').removeClass('transition');
$('.modal').addClass('visible');
},50);
});
// Close moda;
$('.modal__close').on('click', function(){
$('.modal__containter').removeClass('modal__open');
$('.modal').removeClass('visible');
$('.modal').addClass('transition');
setTimeout(function(){
$('.modal').removeClass('transition');
$('.modal').addClass('hide');
},500);
});
// Close modal with esc key
$(document).keydown(function(e){
if(e.keyCode == 27) {
$('.modal__containter').removeClass('modal__open');
$('.modal').removeClass('visible');
$('.modal').addClass('transition');
setTimeout(function(){
$('.modal').removeClass('transition');
$('.modal').addClass('hide');
},500);
}
});
});
View it on Code Pen:
http://codepen.io/DinosVsRobots/pen/WRvodR