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');
}
};
});