JSFiddle - React, Tailwind, and code Playground

by Gaurav Singh

HTML

<script src="https://code.jquery.com/jquery-2.2.4.min.js"></script>

  <div class="c-services__item">
    <div class="c-services__item__content">
      <div class="c-services__item--front">
        <img src="http://lorempixel.com/300/400/">
      </div>
      <div class="c-services__item--back">
        back
      </div>
    </div>
  </div>
  <div class="c-services__item">
    <div class="c-services__item__content">
      <div class="c-services__item--front">
        <img src="http://lorempixel.com/300/400/">
      </div>
      <div class="c-services__item--back">
        back
      </div>
    </div>
  </div>
  <div class="c-services__item">
    <div class="c-services__item__content">
      <div class="c-services__item--front">
        <img src="http://lorempixel.com/300/400/">
      </div>
      <div class="c-services__item--back">
        back
      </div>
    </div>
  </div>
  <div class="c-services__item">
    <div class="c-services__item__content">
      <div class="c-services__item--front">
        <img src="http://lorempixel.com/300/400/">
      </div>
      <div class="c-services__item--back">
        back
      </div>
    </div>
  </div>
  <div class="c-services__item">
    <div class="c-services__item__content">
      <div class="c-services__item--front">
        <img src="http://lorempixel.com/300/400/">
      </div>
      <div class="c-services__item--back">
        back
      </div>
    </div>
  </div>
  <div class="c-services__item">
    <div class="c-services__item__content">
      <div class="c-services__item--front">
        <img src="http://lorempixel.com/300/400/">
      </div>
      <div class="c-services__item--back">
        back
      </div>
    </div>
  </div>

CSS

img {
    height: 100%;
    width: auto;
}

.c-services__item__content {
  height: 100%;
  width: auto;
}

.c-services__item {
  perspective: 1000px;
  -webkit-perspective: 1000px;
  -moz-perspective: 1000px;
  -o-perspective: 1000px;
  -ms-perspective: 1000px;
  display: inline-block;
  vertical-align: middle;
}

.c-services__item .c-services__item__content {
  transition: 0.5s ease-out;
  -webkit-transition: 0.5s ease-out;
  -moz-transition: 0.5s ease-out;
  -o-transition: 0.5s ease-out;
  -ms-transition: 0.5s ease-out;
  transform-style: preserve-3d;
  -webkit-transform-style: preserve-3d;
  -moz-transform-style: preserve-3d;
  -o-transform-style: preserve-3d;
  -ms-transform-style: preserve-3d;
  backface-visibility: visible;
  -webkit-backface-visibility: visible;
  -moz-backface-visibility: visible;
  -o-backface-visibility: visible;
  -ms-backface-visibility: visible;
  display: inline-block;
  position: relative;
  width: 200px;
  height: 400px; // why do i have to set a specific height 
}

.c-services__item.applyflip .c-services__item__content {
  transform: rotateY(180deg);
  -webkit-transform: rotateY(180deg);
  -moz-transform: rotateY(180deg);
  -o-transform: rotateY(180deg);
  -ms-transform: rotateY(180deg);
}

.c-services__item .c-services__item__content .c-services__item--static {
  transition: 0s linear 0.17s;
  -webkit-transition: 0s linear 0.17s;
  -moz-transition: 0s linear 0.17s;
  -o-transition: 0s linear 0.17s;
  -ms-transition: 0s linear 0.17s;
  transform: rotateY(0deg);
  -webkit-transform: rotateY(0deg);
  -moz-transform: rotateY(0deg);
  -o-transform: rotateY(0deg);
  -ms-transform: rotateY(0deg);
  text-align: center;
  position: absolute;
  top: 0;
  left: 0;
  //height:400px;
  width: 100%;
}

.c-services__item.applyflip .c-services__item__content .c-services__item--static {
  transition: 0s linear 0.17s;
  -webkit-transition: 0s linear 0.17s;
  -moz-transition: 0s linear 0.17s;
  -o-transition: 0s linear 0.17s;
  -ms-transition: 0s...

JavaScript

$('.c-services__item').hover(function() {
    $(this).toggleClass('applyflip');
});