JSFiddle - React, Tailwind, and code Playground
HTML
<div class="effeckt-modal-wrap md-effect-8" id="effeckt-modal-wrap" style="display: block;"> <!-- for centering transform -->
<div class="effeckt-modal" id="effeckt-modal">
<h3>Modal Dialog</h3>
<div class="effeckt-modal-content">
<p>This is a modal window.</p>
<button class="effeckt-modal-close">Close me!</button>
</div>
</div>
</div>
<div class="effeckt-overlay" id="effeckt-overlay"></div>
<!-- overlay coming after is important for ~ selector -->
<div class="effeckt-overlay no-transitions" id="effeckt-overlay"></div>
<p>
<button class="modal2-button" data-modal-type="modal-8">3D Flip (horizontal)</button>
</p>
CSS
.effeckt-modal-wrap {
-webkit-transform: translate(-50%, -50%);
-ms-transform: translate(-50%, -50%);
-o-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
position: fixed;
top: 50%;
left: 50%;
width: 50%;
min-width: 320px;
max-width: 630px;
z-index: 2000;
display: none;
}
.effeckt-modal {
visibility: hidden;
-webkit-backface-visibility: hidden;
-ms-backface-visibility: hidden;
-o-backface-visibility: hidden;
backface-visibility: hidden;
background: white;
}
.effeckt-show {
visibility: visible;
}
.effeckt-show .effeckt-modal {
visibility: visible;
}
.effeckt-overlay.effeckt-show {
opacity: 1;
visibility: visible;
}
.effeckt-overlay {
position: fixed;
width: 100%;
height: 100%;
visibility: hidden;
top: 0;
left: 0;
opacity: 0;
-webkit-transition: 500ms;
-o-transition: 500ms;
transition: 500ms;
z-index: 1000;
background: rgba(0, 0, 0, 0.5);
}
.effeckt-modal h3 {
padding: 1rem;
color: white;
background: #444;
}
.effeckt-modal-content {
padding: 1rem;
}
/* Effect 8: 3D flip horizontal */
.md-effect-8 {
-webkit-perspective: 1300px;
-ms-perspective: 1300px;
-o-perspective: 1300px;
perspective: 1300px;
-webkit-transform-style: preserve-3d;
-ms-transform-style: preserve-3d;
-o-transform-style: preserve-3d;
transform-style: preserve-3d;
}
.md-effect-8 .effeckt-modal {
-webkit-transform: rotateY(-70deg);
-ms-transform: rotateY(-70deg);
-o-transform: rotateY(-70deg);
transform: rotateY(-70deg);
-webkit-transition: all 500ms;
-o-transition: all 500ms;
transition: all 500ms;
opacity: 0;
}
.effeckt-show.md-effect-8 .effeckt-modal {
-webkit-transform: rotateY(0deg);
-ms-transform: rotateY(0deg);
-o-transform: rotateY(0deg);
transform: rotateY(0deg);
opacity: 1;
}
JavaScript
$('button').on('click', function () {
$("#effeckt-modal-wrap").show();
window.setTimeout(function() {
$("#effeckt-modal-wrap").addClass('md-effect-8');
$("#effeckt-modal-wrap").addClass("effeckt-show");
$('#effeckt-overlay').addClass("effeckt-show");
$(".effeckt-modal-close, .effeckt-overlay").on("click", function () {
$("#effeckt-modal-wrap").fadeOut();
$('#effeckt-modal-wrap').removeClass("effeckt-show");
//$("#effeckt-modal-wrap").removeClass('md-effect-8');
$('#effeckt-overlay').removeClass("effeckt-show");
});
}, 10);
});