How to Flip Images

Learn how to flip images using CSS (add mirror effect).

Move your mouse over the image:

Wuhan

How to Flip Images

<style>
img:hover {
  -webkit-transform: scaleX(-1);
  transform: scaleX(-1);
}
</style>
<img src="paris.jpg" alt="Paris">

Try It Yourself

Note:This example is not suitable for tablets or mobile phones.

Tip:Please visit our CSS 3D Transformation Tutorial, to learn more about 3D transformations.

3D flip images with text

Learn how to animate 3D flips on images with text:

Shenzhen

Shenzhen

What an amazing city

Step 1 - Add HTML:

<div class="flip-box">
  <div class="flip-box-inner">
    <div class="flip-box-front">
      <img src="img_paris.jpg" alt="Paris" style="width:300px;height:200px">
    </div>
    <div class="flip-box-back">
      <h2>Paris</h2>
      <p>What an amazing city</p>
    </div>
  </div>
</div>

Second step - Add CSS:

/* Flip box container - can set width and height to any value. We added a border property to show that the flip itself will extend beyond the box when the mouse hovers (remove the perspective effect if you do not want 3D effects). */
.flip-box {
  background-color: transparent;
  width: 300px;
  height: 200px;
  border: 1px solid #f1f1f1;
  perspective: 1000px; /* Remove this if you do not want 3D effects */
}
/* This container is used to position the front and back sides */
.flip-box-inner {
  position: relative;
  width: 100%;
  height: 100%;
  text-align: center;
  transition: transform 0.8s;
  transform-style: preserve-3d;
}
/* Perform a horizontal flip when the mouse is over the flip box container */
.flip-box:hover .flip-box-inner {
  transform: rotateY(180deg);
}
/* Position the front and back sides */
.flip-box-front, .flip-box-back {
  position: absolute;
  width: 100%;
  height: 100%;
  -webkit-backface-visibility: hidden; /* Safari */
  backface-visibility: hidden;
}
/* Set the style of the front side (fallback if the image is missing) */
.flip-box-front {
  background-color: #bbb;
  color: black;
}
/* Design the style of the back side */
.flip-box-back {
  background-color: dodgerblue;
  color: white;
  transform: rotateY(180deg);
}

Try It Yourself