JSFiddle - React, Tailwind, and code Playground

by popopome

HTML

<section class="container">
  <div id="card">
    <figure class="front">1</figure>
    <figure class="back">2</figure>
  </div>
</section>

<button id="btnFlip">FLIP</button>

CSS

.container {
  width: 200px;
  height: 260px;
  position: relative;
  margin: 0 auto 40px;
  border: 1px solid #ccc;
  -webkit-perspective: 800px;
}

#card {
  width: 100%;
  height: 100%;
  position: absolute;
  
  -webkit-transform-style: preserve-3d;
  -webkit-transition: -webkit-transform 1s;
  -webkit-transform-origin: right center;
}

#card figure {
  display: block;
  position: absolute;
  width: 100%;
  height: 100%;
  margin: 0;
  
  font-size: 140px;  
  text-align: center;  
  line-height: 260px;
  
  font-weight: bold;
  color: white;
  -webkit-backface-visibility: hidden;
}
#card .front {
  background: red;
}
#card .back {
  background: blue;
  -webkit-transform: rotateY(180deg);
}

#card.flipped {
  -webkit-transform: translateX(-100%) rotateY(-180deg);  
}

JavaScript

$('#btnFlip').on("click",
                 function() {
                   var card = $('#card');
                   if(card.hasClass('flipped')) { 
                     card.removeClass('flipped');
                   }
                   else {
                     card.addClass('flipped');
                   }
                 });