JSFiddle - React, Tailwind, and code Playground
by tjerabek
HTML
<div class="content">
<a href="#" class="open-popup">Open popup</a>
</div>
CSS
.popup-window{
position: absolute;
z-index: 2;
background: #FFF;
width: 50%;
left: 25%;
margin: 0 auto;
margin-top: -250px;
-webkit-transition: all 400ms ease-in-out;
-moz-transition: all 400ms ease-in-out;
-ms-transition: all 400ms ease-in-out;
-o-transition: all 400ms ease-in-out;
transition: all 400ms ease-in-out;
-webkit-box-shadow: 0px 2px 0px 0px rgba(0, 0, 0, 0.2);
box-shadow: 0px 2px 0px 0px rgba(0, 0, 0, 0.2);
}
.popup-overall{
position: fixed;
z-index: 1;
background: #000;
top: 0;
bottom: 0;
right: 0;
left: 0;
opacity: 0;
-webkit-transition: all 400ms ease-in-out;
-moz-transition: all 400ms ease-in-out;
-ms-transition: all 400ms ease-in-out;
-o-transition: all 400ms ease-in-out;
transition: all 400ms ease-in-out;
}
.popup-content{
padding: 1em;
}
.popup-overall.open{
opacity: .3;
}
.popup-overall.closed{
opacity: 0;
z-index: -1;
}
.popup-window.open{
margin-top: 50px;
}
.popup-window.closed{
margin-top: -250px;
}
.open-popup{
}
JavaScript
$(document).ready(function() {
$(document).on('click', '.open-popup', function() {
var $openLink = $(this);
var $popupWindow = $('<div class="popup-window"><div class="popup-content">Popup content</div></div>');
var $overAll = $('<div class="popup-overall"></div>');
var $content = $('.content');
//TODO: Load from AJAX
$content.append($overAll);
$content.append($popupWindow);
//var popupHeight = -parseInt($popupWindow.height());
//$popupWindow.css('top', popupHeight + 'px');
$overAll.on('click', function() {
$popupWindow.addClass('closed');
$overAll.addClass('closed');
});
$popupWindow.delay(1).queue(function(next) {
$(this).addClass("open");
next();
});
$overAll.delay(1).queue(function(next) {
$(this).addClass("open");
next();
});
return false;
});
});