JSFiddle - React, Tailwind, and code Playground

HTML

<script src="https://code.jquery.com/jquery-2.1.4.min.js"></script>
<article>
    <div id="card0" class="card">
        <figure class="front">
        </figure>
        <figure class="back">
        </figure>
    </div>
</article>

CSS

html {
    height: 100%;
}

.flip {
    transform: rotateY(180deg);
}

.card {
    float: left;
    width: 110px;
    height: 139px;
    cursor: pointer;
    transform-style: preserve-3d;
    transition: 1s;
    position: relative;
}

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

.back {
    background-color: blue;
    transform: rotateY(-180deg);
}

.front {
    z-index: 2;
    background-color: red;
    transform: rotateY(0deg);
}

article {
    height: 114px;
    width: 114px;
    perspective: 1000;
}

.visible {
    transform: rotateY(180deg);
}

.invisible {
    transform: rotateY(0deg);
}

JavaScript

$(document).ready(function() {
    var flipped = false;
    var card = $("#card0");
    var figureFront = $("#card0 .front");
    var figureBack = $("#card0 .back");
    card.click(function() {
        flipFunction();
    });

    function flipFunction() {
        if (flipped) { //card flipped so front is invisible and back is visible. 
            flipped = false;

            figureFront.removeClass('invisible');
            figureFront.addClass('visible');

            figureBack.addClass('invisible');
            figureBack.removeClass('visible');


            card.removeClass('flip');
        } else { //card not flipped so front is visible and back is invisible
            flipped = true;

            figureFront.removeClass('visible');

            figureBack.removeClass('invisible');

            card.addClass('flip');
        }
    };
});