JSFiddle - React, Tailwind, and code Playground

HTML

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

  <section id="options">
    <p><button id="flip">Flip Card</button></p>
  </section>

CSS

.container {
  width: 200px;
  height: 260px;
  position: relative;
  perspective: 800px;
}

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

#card figure {
  margin: 0;
  display: block;
  position: absolute;
  width: 100%;
  height: 100%;
  backface-visibility: hidden;
}

#card .front {
  background: red;
}
#card .back {
  background: blue;
  transform: rotateY( 180deg );
}

#card.flipped {
  transform: rotateY( 180deg );
}

JavaScript

var init = function() {
  var card = document.getElementById('card');
  
  document.getElementById('flip').addEventListener( 'click', function(){
    card.toggleClassName('flipped');
  }, false);
};

window.addEventListener('DOMContentLoaded', init, false);