In this article, we are going to learn to flip card block in HTML using JQuery. We will be using JQuery and plugins including wow.js , sticky.js and slick.js in order to achieve this.
Full Source Code :
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/wow/1.1.2/wow.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/sticky-js/1.3.0/sticky.min.js"></script> <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.js"></script> <style> .wrapper{ width:50%; margin:0 auto; margin-top:100px; } .cards { position: relative; list-style-type: none; padding: 0; max-width: 100%; width: 100% } .card:before { content: ""; width: 20px; height: 20px; background: #000; border-radius: 50%; position: absolute; top: 6px; left: 15px } .card { position: absolute; top: 0; left: 0; z-index: 2; color: #fff; background: #cd810e; border-radius: 30px; padding: 20px; box-shadow: 0 0 20px #5e5e5e; transform: translateY(0) rotate(4deg) translateX(25px) scale(1); transform-origin: 0 0; transition: transform .6s cubic-bezier(.8, .2, .1, .8) .1s, background .4s linear; cursor: pointer; user-select: none } @media(min-width:768px) { .card { padding: 40px } } .card:last-child { margin-bottom: 0 } .card--next { z-index: 5; transform: translateY(-25px) rotate(4deg) translateX(25px) scale(1) } .card--out { animation: card-out .6s cubic-bezier(.8, .2, .1, .8); transform: translateY(-50px) rotate(8deg) translateX(55px) scale(.95); z-index: 1; background: #905c0d } @keyframes card-out { 0% { z-index: 20; transform: translateY(0px) rotate(-4deg) } 50% { transform: translateY(-120%) rotate(-5deg) translateX(-40px) } 80% { z-index: 1 } 100% { transform: translateY(-50px) rotate(8deg) translateX(55px) scale(.95) } } .card--current { cursor: auto; user-select: auto; position: relative; z-index: 10; opacity: 1; background: #fb9b09; transform: rotate(-1deg) translateX(0%) scale(1); min-height: 110px; } .card--current p { position: absolute; transform: translateX(-50%); left: 50%; font-size:28px; font-weight: bold; color:#000000; width: calc(100% - 80px) } .main-wrap { margin-top: 5rem; min-height: 276px } @media(min-width:768px) { .main-wrap { min-height: inherit } } </style> <div class="wrapper"> <ul class="cards"> <li class="card"> <p>1. Introduction to Web Technology</p> </li> <li class="card"> <p>2. Basics to HTML and CSS</p> </li> <li class="card"> <p>3. Server Side vs Client Side Scripting</p> </li> <li class="card"> <p>4. JavaScript and JQuery Basics</p> </li> <li class="card"> <p>5. Setup Apache, MySQL and PHP (AMP)</p> </li> <li class="card"> <p>6. Basics : variables, data types, functions, looping and functional statements</p> </li> <li class="card"> <p>7. Playing with Array and Strings</p> </li> <li class="card"> <p>8. Database Management System (DBMS) and RDBMS</p> </li> <li class="card"> <p>9. Introduction to MySQL</p> </li> <li class="card"> <p>10. Basic MySQL Queries</p> </li> <li class="card"> <p>11. Advanced PHP and Object Oriented Programming (OOP)</p> </li> <li class="card"> <p>12. JSON and XML handling in PHP</p> </li> <li class="card"> <p>13. File Handling</p> </li> <li class="card"> <p>14. Optimization and Debugging Techniques</p> </li> <li class="card"> <p>15. Web Security</p> </li> <li class="card"> <p>16. PHP Frameworks (Laravel/Zend/Codeigniter)</p> </li> <li class="card"> <p>17. Get Change to work on Realtime Projects</p> </li> <li class="card"> <p>18. Version Control (Git)</p> </li> <li class="card"> <p>19. Make your websit live in production server</p> </li> <li class="card"> <p>20. cPanel, Domain Registration, Web Hosting and FTP, Cronjobs</p> </li> </ul> </div> <script> $(document).ready(function() { wow = new WOW({ boxClass: 'wow', animateClass: 'animated', offset: 0, mobile: false, live: true }) wow.init(); var sticky = new Sticky('.selector'); $('.slider-for').slick({ slidesToShow: 1, slidesToScroll: 1, arrows: true, speed: 600, autoplaySpeed: 5000, autoplay: true, infinite: true, asNavFor: '.slider-nav' }); $('.slider-nav').slick({ slidesToShow: 3, slidesToScroll: 1, asNavFor: '.slider-for', arrows: false, centerPadding: '0px', dots: false, speed: 600, autoplaySpeed: 5000, infinite: true, autoplay: true, centerMode: true, focusOnSelect: true }); $.fn.commentCards = function() { return this.each(function() { var $this = $(this), $cards = $this.find('.card'), $current = $cards.filter('.card--current'), $next; $cards.on('click', function() { if (!$current.is(this)) { $cards.removeClass('card--current card--out card--next'); $current.addClass('card--out'); $current = $(this).addClass('card--current'); $next = $current.next(); $next = $next.length ? $next : $cards.first(); $next.addClass('card--next'); } }); if (!$current.length) { $current = $cards.last(); $cards.first().trigger('click'); } $this.addClass('cards--active'); }) }; $('.cards').commentCards(); }); </script>