3D Book Flipping Modal Popup With jQuery And CSS3
File Size: | 2.48 KB |
---|---|
Views Total: | 17036 |
Last Update: | |
Publish Date: | |
Official Website: | Go to website |
License: | MIT |
A jQuery and CSS3 based modal popup which allows to reveal the hidden content with a 3D book flipping animation.
How to use it:
1. Create a button to toggle the modal popup.
<div class="button"> <img src="cover.png"> </div>
2. Add front/back content into the modal popup.
<div class="modal"> <div class="front"> <img src="cover.jpg"> </div> <div class="back"> <div class="content"> <h1>Content</h1> <p>Content</p> </div> </div> <div class="opened"> <div class="content"> <h1>Content</h1> <p>Content</p> </div> <div class="close"></div> </div> </div>
3. Create a wrapper element for the 3D flipping animation.
<div class="wrapper"></div>
4. The primary CSS/CSS3 styles for the modal popup and its toggle button.
.button { background-image: -webkit-radial-gradient(circle, #e2f0cb, #9bd151); background-image: -moz-radial-gradient(circle, #e2f0cb, #9bd151); background-image: -ms-radial-gradient(circle, #e2f0cb, #9bd151); background-image: radial-gradient(circle, #e2f0cb, #9bd151); width: 265px; height: 265px; box-sizing: border-box; text-align: center; padding-top: 5px; cursor: pointer; box-shadow: 0 0 21px rgba(50, 49, 79, 0.3); transition: all .4s; } .button:hover { box-shadow: 0 0 30px rgba(50, 49, 79, 0.5); } .modal { width: 530px; height: 265px; perspective: 2000px; z-index: 2; position: absolute; top: calc(50% - 132.5px); left: calc(50% - 265px); display: none; } .shadow { box-shadow: 0 0 30px rgba(50, 49, 79, 0.5); } .wrapper { background: rgba(50, 49, 79, 0.5); width: 100%; height: 100%; position: absolute; top: 0; left: 0; display: none; } .front, .back, .opened { height: 265px; position: absolute; box-sizing: border-box; } .front { background-image: -webkit-radial-gradient(circle, #e2f0cb, #9bd151); background-image: -moz-radial-gradient(circle, #e2f0cb, #9bd151); background-image: -ms-radial-gradient(circle, #e2f0cb, #9bd151); background-image: radial-gradient(circle, #e2f0cb, #9bd151); width: 265px; text-align: center; padding-top: 5px; cursor: pointer; z-index: 3; backface-visibility: hidden; transform-origin: 0% 50%; box-shadow: 0 0 21px rgba(50, 49, 79, 0.5); transform: rotateY(-180deg); } .back, .opened { width: 530px; padding: 35px 25px; clip: rect(auto, auto, auto, 265px); } .back { background: #f2f2f2; transform-origin: 50% 50%; transform: rotateY(-180deg); } .back .content { transform: rotateY(180deg); } .opened { background: #f2f2f2; } .close { position: absolute; top: 15px; right: 15px; cursor: pointer; width: 25px; height: 25px; background: url(http://i63.tinypic.com/1671taq.png) no-repeat center; background-size: cover; opacity: .6; } .front-open { animation: front 1.1s forwards ease-in-out; } .back-open { animation: back 1.1s forwards ease-in-out; } .opened-open { animation: opened 1.1s forwards ease-in-out; } .front-close { animation: front 1.1s forwards reverse ease-in-out; } .back-close { animation: back 1.1s forwards reverse ease-in-out; } .opened-close { animation: opened 1.1s forwards reverse ease-in-out; }
5. The core CSS3 animations for the 3D flipping effect.
@keyframes front { 0% { transform: rotateY(0deg); left: 132.5px; } 100% { transform: rotateY(-180deg); left: 265px; } } @keyframes back { 0% { transform: rotateY(0deg); left: -132.5px; background: #4d4d4d; } 100% { transform: rotateY(-180deg); left: 0; background: #f2f2f2; } } @keyframes opened { 0% { left: -132.5px; background: #a6a6a6; } 100% { left: 0; background: #f2f2f2; } }
6. Don't forget to include the latest version of jQuery library at the bottom of the webpage.
<script src="//code.jquery.com/jquery-2.2.2.min.js"></script>
7. The core JavaScript to active the 3D flipping modal popup.
$('.button').click(function() { $(this).hide(); $('.front').addClass('front-open'); $('.back').addClass('back-open'); $('.opened').addClass('opened-open'); $('.modal').show(); setTimeout(function() { $('.modal').addClass('shadow'); }, 1000); setTimeout(function() { $('.front').removeClass('front-open'); $('.back').removeClass('back-open'); $('.opened').removeClass('opened-open'); }, 1200); $('.wrapper').delay(500).fadeIn(); }); $('.close').click(function() { $('.wrapper').fadeOut(300); $('.modal').removeClass('shadow'); $('.front').addClass('front-close'); $('.back').addClass('back-close'); $('.opened').addClass('opened-close'); setTimeout(function() { $('.modal').hide(); $('.button').show(); $('.front').removeClass('front-close'); $('.back').removeClass('back-close'); $('.opened').removeClass('opened-close'); }, 1100) }) $('.wrapper').click(function() { $('.wrapper').fadeOut(300); $('.modal').removeClass('shadow'); $('.front').addClass('front-close'); $('.back').addClass('back-close'); $('.opened').addClass('opened-close'); setTimeout(function() { $('.modal').hide(); $('.button').show(); $('.front').removeClass('front-close'); $('.back').removeClass('back-close'); $('.opened').removeClass('opened-close'); }, 1100) })
This awesome jQuery plugin is developed by nastasia. For more Advanced Usages, please check the demo page or visit the official website.