JSFiddle - React, Tailwind, and code Playground
HTML
<div class="flip-card flip-y-inverse" id="flip-panel" style="width:200px; height:200px">
<div class="flip-card-content">
<div class="flip-card-side" style="background:red">
FRONT <button onclick="$('#flip-panel').toggleClass('flipped')">flip!</button>
</div>
<div class="flip-card-side flip-card-back" style="background:green">
BACK <button onclick="$('#flip-panel').toggleClass('flipped')">flip!</button>
</div>
</div>
</div>
CSS
.flip-card {
position: relative;
z-index: 1;
-webkit-perspective: 1000px;
-moz-perspective: 1000px;
-o-perspective: 1000px;
perspective: 1000px;
}
.flip-card-content {
width: 100%;
height: 100%;
-webkit-transform-style: preserve-3d;
-webkit-transition: all 0.5s ease-in-out;
-moz-transform-style: preserve-3d;
-moz-transition: all 0.5s ease-in-out;
-o-transform-style: preserve-3d;
-o-transition: all 0.5s ease-in-out;
transform-style: preserve-3d;
transition: all 0.5s ease-in-out;
}
.flip-card.flip-x.flipped .flip-card-content,
.flip-card.flip-x .flip-card-side.flip-card-back {
-webkit-transform: rotateX(180deg);
-moz-transform: rotateX(180deg);
-o-transform: rotateX(180deg);
transform: rotateX(180deg);
}
.flip-card.flip-x-inverse.flipped .flip-card-content,
.flip-card.flip-x-inverse .flip-card-side.flip-card-back {
-webkit-transform: rotateX(-180deg);
-moz-transform: rotateX(-180deg);
-o-transform: rotateX(-180deg);
transform: rotateX(-180deg);
}
.flip-card.flip-y.flipped .flip-card-content,
.flip-card.flip-y .flip-card-side.flip-card-back {
-webkit-transform: rotateY(180deg);
-moz-transform: rotateY(180deg);
-o-transform: rotateY(180deg);
transform: rotateY(180deg);
}
.flip-card.flip-y-inverse.flipped .flip-card-content,
.flip-card.flip-y-inverse .flip-card-side.flip-card-back {
-webkit-transform: rotateY(-180deg);
-moz-transform: rotateY(-180deg);
-o-transform: rotateY(-180deg);
transform: rotateY(-180deg);
}
.flip-card-side {
position: absolute;
width: 100%;
height: 100%;
-webkit-backface-visibility: hidden;
-moz-backface-visibility: hidden;
-o-backface-visibility: hidden;
backface-visibility: hidden;
}