10+ CSS 3D Image Effect Examples

This post contains a total of 10+ CSS 3D Image Effect Examples with Source Code. All these 3D Image Effects are made using CSS.

You can use the source code of these examples with credits to the original owner.

Related Posts

CSS 3D Image Effect Examples

1. 3D Image on hover

Made by Dennys Dionigi. Source

<!DOCTYPE html>
<html lang="en" >
<head>
  <title></title>
<style>
/*custom font - Montserrat*/
@import url(https://fonts.googleapis.com/css?family=Montserrat);
/*basic reset*/
* {margin: 0; padding: 0;}
/*forcing the body to take 100% height*/
html, body {min-height: 100%;}
/*a nice BG*/
body {
	background: #544; /*fallback*/
	background: linear-gradient(#544, #565);
}

/*Thumbnail Background*/
.thumb {
	width: 400px; height: 300px; margin: 70px auto;
	perspective: 1000px; border-radius:5px;
}
.thumb a {
	display: block; width: 100%; height: 100%;
	/*double layered BG for lighting effect*/
	background: 
		linear-gradient(rgba(0, 0, 0, 0.4), rgba(0, 0, 0, 0.4)), 
		url("http://thecodeplayer.com/u/m/i1.png");
	/*disabling the translucent black bg on the main image*/
	background-size: 0, cover;
	/*3d space for children*/
	transform-style: preserve-3d;
	transition: all 0.5s;
}
.thumb:hover a {transform: rotateX(80deg); transform-origin: bottom;}
/*bottom surface */
.thumb a:after {
	/*36px high element positioned at the bottom of the image*/
	content: ''; position: absolute; left: 0; bottom: 0; 
	width: 100%; height: 36px;
	/*inherit the main BG*/
	background: inherit; background-size: cover, cover;
	/*draw the BG bottom up*/
	background-position: bottom;
	/*rotate the surface 90deg on the bottom axis*/
	transform: rotateX(90deg); transform-origin: bottom;
}
/*label style*/
.thumb a span {
	color: white; text-transform: uppercase;
	position: absolute; top: 100%; left: 0; width: 100%;
	font: bold 12px/36px Montserrat; text-align: center;
	/*the rotation is a bit less than the bottom surface to avoid flickering*/
	transform: rotateX(-89.99deg); transform-origin: top;
	z-index: 1;
}
/*shadow*/
.thumb a:before {
	content: ''; position: absolute; top: 0; left: 0;
	width: 100%; height: 100%;
	background: rgba(0, 0, 0, 0.5); 
	box-shadow: 0 0 100px 50px rgba(0, 0, 0, 0.5);
	transition: all 0.5s; 
	/*by default the shadow will be almost flat, very transparent, scaled down with a large blur*/
	opacity: 0.15;
	transform: rotateX(95deg) translateZ(-80px) scale(0.75);
	transform-origin: bottom;
}
.thumb:hover a:before {
	opacity: 1;
	/*blurred effect using box shadow as filter: blur is not supported in all browsers*/
	box-shadow: 0 0 25px 25px rgba(0, 0, 0, 0.5);
	/*pushing the shadow down and scaling it down to size*/
	transform: rotateX(0) translateZ(-60px) scale(0.85);
}
</style>
</head>
<body>
  <!-- Container -->
<div class="thumb">
	<!-- Image -->
	<a href="#">
		<!-- Label -->
		<span>Why Not?</span>
	</a>
</div>
</body>
</html>

2. One background for multiple divs

Made by Ivan Bogachev. Source

<!DOCTYPE html>
<html lang="en" >
<head>
  <title></title>
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/5.0.0/normalize.min.css">
<style>
html,
body {
  min-height: 100%;
}
body {
  background: linear-gradient(125deg, #302015 0%, #1C1008 100%);
}
.example {
  position: relative;
  width: 80%;
  padding-top: 50%;
  margin: 2rem auto;
}
.example > .block {
  position: absolute;
  height: 100%;
  width: 30%;
  perspective: 1000px;
}
.example > .block:nth-of-type(1) {
  height: 80%;
  top: 10%;
  left: 17%;
  width: 15%;
}
.example > .block:nth-of-type(2) {
  top: 0;
  left: 35%;
}
.example > .block:nth-of-type(3) {
  height: 80%;
  top: 10%;
  left: 64%;
  width: 15%;
}
.example > .block > .side {
  position: absolute;
  top: 0;
  left: 0;
  background-image: url('https://picsum.photos/id/1025/1024/768');
  background-size: auto 100%;
  box-shadow: -1vw 0.5vw 1vw rgba(0, 0, 0, 0.3);
}
.example > .block > .side.-main {
  height: 100%;
  width: 100%;
  transform: rotateY(30deg);
  transform-origin: 0 50%;
}
.example > .block > .side.-left {
  height: 100%;
  width: 20%;
  transform-origin: 0 50%;
  transform: rotateY(-60deg) translateX(-100%);
  filter: brightness(40%);
}
.example > .block:nth-of-type(1) > .side.-main {
  background-position: 4% 50%;
  background-size: auto 130%;
}
.example > .block:nth-of-type(1) > .side.-left {
  background-position: 0 50%;
  background-size: auto 130%;
}
.example > .block:nth-of-type(2) > .side.-main {
  background-position: 50% 0;
}
.example > .block:nth-of-type(2) > .side.-left {
  background-position: 28.5% 0;
}
.example > .block:nth-of-type(3) > .side.-main {
  background-position: 96% 50%;
  background-size: auto 130%;
}
.example > .block:nth-of-type(3) > .side.-left {
  background-position: 78% 50%;
  background-size: auto 130%;
}
</style>
</head>
<body>
  <div class="example">
  <div class="block">
    <div class="side -main"></div>
    <div class="side -left"></div>
  </div>
  <div class="block">
    <div class="side -main"></div>
    <div class="side -left"></div>
  </div>
  <div class="block">
    <div class="side -main"></div>
    <div class="side -left"></div>
  </div>
</div>
</body>
</html>

3. 3D image hover CSS

Made by Shounak Ghosh. Source

<!DOCTYPE html>
<html lang="en" >
<head>
  <title></title>
<style>
body {
  margin: 0;
  padding: 0;
  width: 100%;
  height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
}
.container {
  position: relative;
  width: 360px;
  height: 640px;
  margin-top: 150px;
  background: rgba(0, 0, 0, 0);
  transform: rotate(-30deg) skew(25deg) scale(0.8);
  transition: 0.5s;
}
.container img {
  position: absolute;
  width: 100%;
  transition: 0.5s;
}
.container:hover img:nth-child(4) {
  transform: translate(160px, -160px);
  opacity: 1;
}
.container:hover img:nth-child(3) {
  transform: translate(120px, -120px);
  opacity: 0.8;
}
.container:hover img:nth-child(2) {
  transform: translate(80px, -80px);
  opacity: 0.6;
}
.container:hover img:nth-child(1) {
  transform: translate(40px, -40px);
  opacity: 0.4;
}
</style>
</head>
<body>
  <div class="container">
    <img src="https://res.cloudinary.com/websway/image/upload/v1538242836/img_vkgzwy.png">
    <img src="https://res.cloudinary.com/websway/image/upload/v1538242836/img_vkgzwy.png">
    <img src="https://res.cloudinary.com/websway/image/upload/v1538242836/img_vkgzwy.png">
    <img src="https://res.cloudinary.com/websway/image/upload/v1538242836/img_vkgzwy.png">
  </div>
</body>
</html>

4. 3D effect on hover – CSS only

Made by Vincent Durand. Source

<!DOCTYPE html>
<html lang="en" >
<head>
  <title></title>  
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/meyer-reset/2.0/reset.min.css">
<style>
@charset "UTF-8";
@import url(https://fonts.googleapis.com/css?family=Open+Sans:300);
html {
  height: 100%;
}

body {
  text-align: center;
  height: 100%;
  background-color: #2C4159;
  font-family: "Open Sans", sans-serif;
}
body:before {
  content: "";
  display: inline-block;
  height: 100%;
  vertical-align: middle;
}

.reflection-container {
  position: relative;
  display: inline-block;
  vertical-align: middle;
  transform-style: preserve-3d;
  perspective: 1000px;
}
.reflection-container:before {
  content: "Hover me ➜";
  color: #fff;
  position: absolute;
  left: -1rem;
  top: 50%;
  font-size: 6vh;
  transform: translateX(-100%) translateY(-50%);
}
.reflection-container .reflection-content {
  height: 80vh;
  width: 80vh;
  background: #000 url(https://unsplash.it/800/800/?random);
  background-size: cover;
  background-position: center;
  transform: rotateX(0) rotateY(0);
  pointer-events: none;
  transition: 100ms linear transform;
  overflow: hidden;
}
.reflection-container .reflection-content:before {
  content: "";
  position: absolute;
  width: 200%;
  height: 200%;
  left: -50%;
  top: -50%;
  background: linear-gradient(rgba(255, 255, 255, 0.2), rgba(0, 0, 0, 0.2));
}
.reflection-container .reflection-grid-cell {
  position: absolute;
  z-index: 1;
  width: 10%;
  height: 10%;
}
.reflection-container .reflection-grid-cell-1 {
  top: 0%;
  left: 0%;
}
.reflection-container .reflection-grid-cell-1:hover ~ .reflection-content {
  transform: rotateX(20deg) rotateY(-20deg);
}
.reflection-container .reflection-grid-cell-1:hover ~ .reflection-content:before {
  transform: translateY(20%);
}
.reflection-container .reflection-grid-cell-2 {
  top: 0%;
  left: 10%;
}
.reflection-container .reflection-grid-cell-2:hover ~ .reflection-content {
  transform: rotateX(20deg) rotateY(-15deg);
}
.reflection-container .reflection-grid-cell-2:hover ~ .reflection-content:before {
  transform: translateY(20%);
}
.reflection-container .reflection-grid-cell-3 {
  top: 0%;
  left: 20%;
}
.reflection-container .reflection-grid-cell-3:hover ~ .reflection-content {
  transform: rotateX(20deg) rotateY(-10deg);
}
.reflection-container .reflection-grid-cell-3:hover ~ .reflection-content:before {
  transform: translateY(20%);
}
.reflection-container .reflection-grid-cell-4 {
  top: 0%;
  left: 30%;
}
.reflection-container .reflection-grid-cell-4:hover ~ .reflection-content {
  transform: rotateX(20deg) rotateY(-5deg);
}
.reflection-container .reflection-grid-cell-4:hover ~ .reflection-content:before {
  transform: translateY(20%);
}
.reflection-container .reflection-grid-cell-5 {
  top: 0%;
  left: 40%;
}
.reflection-container .reflection-grid-cell-5:hover ~ .reflection-content {
  transform: rotateX(20deg) rotateY(0deg);
}
.reflection-container .reflection-grid-cell-5:hover ~ .reflection-content:before {
  transform: translateY(20%);
}
.reflection-container .reflection-grid-cell-6 {
  top: 0%;
  left: 50%;
}
.reflection-container .reflection-grid-cell-6:hover ~ .reflection-content {
  transform: rotateX(20deg) rotateY(5deg);
}
.reflection-container .reflection-grid-cell-6:hover ~ .reflection-content:before {
  transform: translateY(20%);
}
.reflection-container .reflection-grid-cell-7 {
  top: 0%;
  left: 60%;
}
.reflection-container .reflection-grid-cell-7:hover ~ .reflection-content {
  transform: rotateX(20deg) rotateY(10deg);
}
.reflection-container .reflection-grid-cell-7:hover ~ .reflection-content:before {
  transform: translateY(20%);
}
.reflection-container .reflection-grid-cell-8 {
  top: 0%;
  left: 70%;
}
.reflection-container .reflection-grid-cell-8:hover ~ .reflection-content {
  transform: rotateX(20deg) rotateY(15deg);
}
.reflection-container .reflection-grid-cell-8:hover ~ .reflection-content:before {
  transform: translateY(20%);
}
.reflection-container .reflection-grid-cell-9 {
  top: 0%;
  left: 80%;
}
.reflection-container .reflection-grid-cell-9:hover ~ .reflection-content {
  transform: rotateX(20deg) rotateY(20deg);
}
.reflection-container .reflection-grid-cell-9:hover ~ .reflection-content:before {
  transform: translateY(20%);
}
.reflection-container .reflection-grid-cell-10 {
  top: 0%;
  left: 90%;
}
.reflection-container .reflection-grid-cell-10:hover ~ .reflection-content {
  transform: rotateX(20deg) rotateY(25deg);
}
.reflection-container .reflection-grid-cell-10:hover ~ .reflection-content:before {
  transform: translateY(20%);
}
.reflection-container .reflection-grid-cell-11 {
  top: 10%;
  left: 0%;
}
.reflection-container .reflection-grid-cell-11:hover ~ .reflection-content {
  transform: rotateX(15deg) rotateY(-20deg);
}
.reflection-container .reflection-grid-cell-11:hover ~ .reflection-content:before {
  transform: translateY(15%);
}
.reflection-container .reflection-grid-cell-12 {
  top: 10%;
  left: 10%;
}
.reflection-container .reflection-grid-cell-12:hover ~ .reflection-content {
  transform: rotateX(15deg) rotateY(-15deg);
}
.reflection-container .reflection-grid-cell-12:hover ~ .reflection-content:before {
  transform: translateY(15%);
}
.reflection-container .reflection-grid-cell-13 {
  top: 10%;
  left: 20%;
}
.reflection-container .reflection-grid-cell-13:hover ~ .reflection-content {
  transform: rotateX(15deg) rotateY(-10deg);
}
.reflection-container .reflection-grid-cell-13:hover ~ .reflection-content:before {
  transform: translateY(15%);
}
.reflection-container .reflection-grid-cell-14 {
  top: 10%;
  left: 30%;
}
.reflection-container .reflection-grid-cell-14:hover ~ .reflection-content {
  transform: rotateX(15deg) rotateY(-5deg);
}
.reflection-container .reflection-grid-cell-14:hover ~ .reflection-content:before {
  transform: translateY(15%);
}
.reflection-container .reflection-grid-cell-15 {
  top: 10%;
  left: 40%;
}
.reflection-container .reflection-grid-cell-15:hover ~ .reflection-content {
  transform: rotateX(15deg) rotateY(0deg);
}
.reflection-container .reflection-grid-cell-15:hover ~ .reflection-content:before {
  transform: translateY(15%);
}
.reflection-container .reflection-grid-cell-16 {
  top: 10%;
  left: 50%;
}
.reflection-container .reflection-grid-cell-16:hover ~ .reflection-content {
  transform: rotateX(15deg) rotateY(5deg);
}
.reflection-container .reflection-grid-cell-16:hover ~ .reflection-content:before {
  transform: translateY(15%);
}
.reflection-container .reflection-grid-cell-17 {
  top: 10%;
  left: 60%;
}
.reflection-container .reflection-grid-cell-17:hover ~ .reflection-content {
  transform: rotateX(15deg) rotateY(10deg);
}
.reflection-container .reflection-grid-cell-17:hover ~ .reflection-content:before {
  transform: translateY(15%);
}
.reflection-container .reflection-grid-cell-18 {
  top: 10%;
  left: 70%;
}
.reflection-container .reflection-grid-cell-18:hover ~ .reflection-content {
  transform: rotateX(15deg) rotateY(15deg);
}
.reflection-container .reflection-grid-cell-18:hover ~ .reflection-content:before {
  transform: translateY(15%);
}
.reflection-container .reflection-grid-cell-19 {
  top: 10%;
  left: 80%;
}
.reflection-container .reflection-grid-cell-19:hover ~ .reflection-content {
  transform: rotateX(15deg) rotateY(20deg);
}
.reflection-container .reflection-grid-cell-19:hover ~ .reflection-content:before {
  transform: translateY(15%);
}
.reflection-container .reflection-grid-cell-20 {
  top: 10%;
  left: 90%;
}
.reflection-container .reflection-grid-cell-20:hover ~ .reflection-content {
  transform: rotateX(15deg) rotateY(25deg);
}
.reflection-container .reflection-grid-cell-20:hover ~ .reflection-content:before {
  transform: translateY(15%);
}
.reflection-container .reflection-grid-cell-21 {
  top: 20%;
  left: 0%;
}
.reflection-container .reflection-grid-cell-21:hover ~ .reflection-content {
  transform: rotateX(10deg) rotateY(-20deg);
}
.reflection-container .reflection-grid-cell-21:hover ~ .reflection-content:before {
  transform: translateY(10%);
}
.reflection-container .reflection-grid-cell-22 {
  top: 20%;
  left: 10%;
}
.reflection-container .reflection-grid-cell-22:hover ~ .reflection-content {
  transform: rotateX(10deg) rotateY(-15deg);
}
.reflection-container .reflection-grid-cell-22:hover ~ .reflection-content:before {
  transform: translateY(10%);
}
.reflection-container .reflection-grid-cell-23 {
  top: 20%;
  left: 20%;
}
.reflection-container .reflection-grid-cell-23:hover ~ .reflection-content {
  transform: rotateX(10deg) rotateY(-10deg);
}
.reflection-container .reflection-grid-cell-23:hover ~ .reflection-content:before {
  transform: translateY(10%);
}
.reflection-container .reflection-grid-cell-24 {
  top: 20%;
  left: 30%;
}
.reflection-container .reflection-grid-cell-24:hover ~ .reflection-content {
  transform: rotateX(10deg) rotateY(-5deg);
}
.reflection-container .reflection-grid-cell-24:hover ~ .reflection-content:before {
  transform: translateY(10%);
}
.reflection-container .reflection-grid-cell-25 {
  top: 20%;
  left: 40%;
}
.reflection-container .reflection-grid-cell-25:hover ~ .reflection-content {
  transform: rotateX(10deg) rotateY(0deg);
}
.reflection-container .reflection-grid-cell-25:hover ~ .reflection-content:before {
  transform: translateY(10%);
}
.reflection-container .reflection-grid-cell-26 {
  top: 20%;
  left: 50%;
}
.reflection-container .reflection-grid-cell-26:hover ~ .reflection-content {
  transform: rotateX(10deg) rotateY(5deg);
}
.reflection-container .reflection-grid-cell-26:hover ~ .reflection-content:before {
  transform: translateY(10%);
}
.reflection-container .reflection-grid-cell-27 {
  top: 20%;
  left: 60%;
}
.reflection-container .reflection-grid-cell-27:hover ~ .reflection-content {
  transform: rotateX(10deg) rotateY(10deg);
}
.reflection-container .reflection-grid-cell-27:hover ~ .reflection-content:before {
  transform: translateY(10%);
}
.reflection-container .reflection-grid-cell-28 {
  top: 20%;
  left: 70%;
}
.reflection-container .reflection-grid-cell-28:hover ~ .reflection-content {
  transform: rotateX(10deg) rotateY(15deg);
}
.reflection-container .reflection-grid-cell-28:hover ~ .reflection-content:before {
  transform: translateY(10%);
}
.reflection-container .reflection-grid-cell-29 {
  top: 20%;
  left: 80%;
}
.reflection-container .reflection-grid-cell-29:hover ~ .reflection-content {
  transform: rotateX(10deg) rotateY(20deg);
}
.reflection-container .reflection-grid-cell-29:hover ~ .reflection-content:before {
  transform: translateY(10%);
}
.reflection-container .reflection-grid-cell-30 {
  top: 20%;
  left: 90%;
}
.reflection-container .reflection-grid-cell-30:hover ~ .reflection-content {
  transform: rotateX(10deg) rotateY(25deg);
}
.reflection-container .reflection-grid-cell-30:hover ~ .reflection-content:before {
  transform: translateY(10%);
}
.reflection-container .reflection-grid-cell-31 {
  top: 30%;
  left: 0%;
}
.reflection-container .reflection-grid-cell-31:hover ~ .reflection-content {
  transform: rotateX(5deg) rotateY(-20deg);
}
.reflection-container .reflection-grid-cell-31:hover ~ .reflection-content:before {
  transform: translateY(5%);
}
.reflection-container .reflection-grid-cell-32 {
  top: 30%;
  left: 10%;
}
.reflection-container .reflection-grid-cell-32:hover ~ .reflection-content {
  transform: rotateX(5deg) rotateY(-15deg);
}
.reflection-container .reflection-grid-cell-32:hover ~ .reflection-content:before {
  transform: translateY(5%);
}
.reflection-container .reflection-grid-cell-33 {
  top: 30%;
  left: 20%;
}
.reflection-container .reflection-grid-cell-33:hover ~ .reflection-content {
  transform: rotateX(5deg) rotateY(-10deg);
}
.reflection-container .reflection-grid-cell-33:hover ~ .reflection-content:before {
  transform: translateY(5%);
}
.reflection-container .reflection-grid-cell-34 {
  top: 30%;
  left: 30%;
}
.reflection-container .reflection-grid-cell-34:hover ~ .reflection-content {
  transform: rotateX(5deg) rotateY(-5deg);
}
.reflection-container .reflection-grid-cell-34:hover ~ .reflection-content:before {
  transform: translateY(5%);
}
.reflection-container .reflection-grid-cell-35 {
  top: 30%;
  left: 40%;
}
.reflection-container .reflection-grid-cell-35:hover ~ .reflection-content {
  transform: rotateX(5deg) rotateY(0deg);
}
.reflection-container .reflection-grid-cell-35:hover ~ .reflection-content:before {
  transform: translateY(5%);
}
.reflection-container .reflection-grid-cell-36 {
  top: 30%;
  left: 50%;
}
.reflection-container .reflection-grid-cell-36:hover ~ .reflection-content {
  transform: rotateX(5deg) rotateY(5deg);
}
.reflection-container .reflection-grid-cell-36:hover ~ .reflection-content:before {
  transform: translateY(5%);
}
.reflection-container .reflection-grid-cell-37 {
  top: 30%;
  left: 60%;
}
.reflection-container .reflection-grid-cell-37:hover ~ .reflection-content {
  transform: rotateX(5deg) rotateY(10deg);
}
.reflection-container .reflection-grid-cell-37:hover ~ .reflection-content:before {
  transform: translateY(5%);
}
.reflection-container .reflection-grid-cell-38 {
  top: 30%;
  left: 70%;
}
.reflection-container .reflection-grid-cell-38:hover ~ .reflection-content {
  transform: rotateX(5deg) rotateY(15deg);
}
.reflection-container .reflection-grid-cell-38:hover ~ .reflection-content:before {
  transform: translateY(5%);
}
.reflection-container .reflection-grid-cell-39 {
  top: 30%;
  left: 80%;
}
.reflection-container .reflection-grid-cell-39:hover ~ .reflection-content {
  transform: rotateX(5deg) rotateY(20deg);
}
.reflection-container .reflection-grid-cell-39:hover ~ .reflection-content:before {
  transform: translateY(5%);
}
.reflection-container .reflection-grid-cell-40 {
  top: 30%;
  left: 90%;
}
.reflection-container .reflection-grid-cell-40:hover ~ .reflection-content {
  transform: rotateX(5deg) rotateY(25deg);
}
.reflection-container .reflection-grid-cell-40:hover ~ .reflection-content:before {
  transform: translateY(5%);
}
.reflection-container .reflection-grid-cell-41 {
  top: 40%;
  left: 0%;
}
.reflection-container .reflection-grid-cell-41:hover ~ .reflection-content {
  transform: rotateX(0deg) rotateY(-20deg);
}
.reflection-container .reflection-grid-cell-41:hover ~ .reflection-content:before {
  transform: translateY(0%);
}
.reflection-container .reflection-grid-cell-42 {
  top: 40%;
  left: 10%;
}
.reflection-container .reflection-grid-cell-42:hover ~ .reflection-content {
  transform: rotateX(0deg) rotateY(-15deg);
}
.reflection-container .reflection-grid-cell-42:hover ~ .reflection-content:before {
  transform: translateY(0%);
}
.reflection-container .reflection-grid-cell-43 {
  top: 40%;
  left: 20%;
}
.reflection-container .reflection-grid-cell-43:hover ~ .reflection-content {
  transform: rotateX(0deg) rotateY(-10deg);
}
.reflection-container .reflection-grid-cell-43:hover ~ .reflection-content:before {
  transform: translateY(0%);
}
.reflection-container .reflection-grid-cell-44 {
  top: 40%;
  left: 30%;
}
.reflection-container .reflection-grid-cell-44:hover ~ .reflection-content {
  transform: rotateX(0deg) rotateY(-5deg);
}
.reflection-container .reflection-grid-cell-44:hover ~ .reflection-content:before {
  transform: translateY(0%);
}
.reflection-container .reflection-grid-cell-45 {
  top: 40%;
  left: 40%;
}
.reflection-container .reflection-grid-cell-45:hover ~ .reflection-content {
  transform: rotateX(0deg) rotateY(0deg);
}
.reflection-container .reflection-grid-cell-45:hover ~ .reflection-content:before {
  transform: translateY(0%);
}
.reflection-container .reflection-grid-cell-46 {
  top: 40%;
  left: 50%;
}
.reflection-container .reflection-grid-cell-46:hover ~ .reflection-content {
  transform: rotateX(0deg) rotateY(5deg);
}
.reflection-container .reflection-grid-cell-46:hover ~ .reflection-content:before {
  transform: translateY(0%);
}
.reflection-container .reflection-grid-cell-47 {
  top: 40%;
  left: 60%;
}
.reflection-container .reflection-grid-cell-47:hover ~ .reflection-content {
  transform: rotateX(0deg) rotateY(10deg);
}
.reflection-container .reflection-grid-cell-47:hover ~ .reflection-content:before {
  transform: translateY(0%);
}
.reflection-container .reflection-grid-cell-48 {
  top: 40%;
  left: 70%;
}
.reflection-container .reflection-grid-cell-48:hover ~ .reflection-content {
  transform: rotateX(0deg) rotateY(15deg);
}
.reflection-container .reflection-grid-cell-48:hover ~ .reflection-content:before {
  transform: translateY(0%);
}
.reflection-container .reflection-grid-cell-49 {
  top: 40%;
  left: 80%;
}
.reflection-container .reflection-grid-cell-49:hover ~ .reflection-content {
  transform: rotateX(0deg) rotateY(20deg);
}
.reflection-container .reflection-grid-cell-49:hover ~ .reflection-content:before {
  transform: translateY(0%);
}
.reflection-container .reflection-grid-cell-50 {
  top: 40%;
  left: 90%;
}
.reflection-container .reflection-grid-cell-50:hover ~ .reflection-content {
  transform: rotateX(0deg) rotateY(25deg);
}
.reflection-container .reflection-grid-cell-50:hover ~ .reflection-content:before {
  transform: translateY(0%);
}
.reflection-container .reflection-grid-cell-51 {
  top: 50%;
  left: 0%;
}
.reflection-container .reflection-grid-cell-51:hover ~ .reflection-content {
  transform: rotateX(-5deg) rotateY(-20deg);
}
.reflection-container .reflection-grid-cell-51:hover ~ .reflection-content:before {
  transform: translateY(-5%);
}
.reflection-container .reflection-grid-cell-52 {
  top: 50%;
  left: 10%;
}
.reflection-container .reflection-grid-cell-52:hover ~ .reflection-content {
  transform: rotateX(-5deg) rotateY(-15deg);
}
.reflection-container .reflection-grid-cell-52:hover ~ .reflection-content:before {
  transform: translateY(-5%);
}
.reflection-container .reflection-grid-cell-53 {
  top: 50%;
  left: 20%;
}
.reflection-container .reflection-grid-cell-53:hover ~ .reflection-content {
  transform: rotateX(-5deg) rotateY(-10deg);
}
.reflection-container .reflection-grid-cell-53:hover ~ .reflection-content:before {
  transform: translateY(-5%);
}
.reflection-container .reflection-grid-cell-54 {
  top: 50%;
  left: 30%;
}
.reflection-container .reflection-grid-cell-54:hover ~ .reflection-content {
  transform: rotateX(-5deg) rotateY(-5deg);
}
.reflection-container .reflection-grid-cell-54:hover ~ .reflection-content:before {
  transform: translateY(-5%);
}
.reflection-container .reflection-grid-cell-55 {
  top: 50%;
  left: 40%;
}
.reflection-container .reflection-grid-cell-55:hover ~ .reflection-content {
  transform: rotateX(-5deg) rotateY(0deg);
}
.reflection-container .reflection-grid-cell-55:hover ~ .reflection-content:before {
  transform: translateY(-5%);
}
.reflection-container .reflection-grid-cell-56 {
  top: 50%;
  left: 50%;
}
.reflection-container .reflection-grid-cell-56:hover ~ .reflection-content {
  transform: rotateX(-5deg) rotateY(5deg);
}
.reflection-container .reflection-grid-cell-56:hover ~ .reflection-content:before {
  transform: translateY(-5%);
}
.reflection-container .reflection-grid-cell-57 {
  top: 50%;
  left: 60%;
}
.reflection-container .reflection-grid-cell-57:hover ~ .reflection-content {
  transform: rotateX(-5deg) rotateY(10deg);
}
.reflection-container .reflection-grid-cell-57:hover ~ .reflection-content:before {
  transform: translateY(-5%);
}
.reflection-container .reflection-grid-cell-58 {
  top: 50%;
  left: 70%;
}
.reflection-container .reflection-grid-cell-58:hover ~ .reflection-content {
  transform: rotateX(-5deg) rotateY(15deg);
}
.reflection-container .reflection-grid-cell-58:hover ~ .reflection-content:before {
  transform: translateY(-5%);
}
.reflection-container .reflection-grid-cell-59 {
  top: 50%;
  left: 80%;
}
.reflection-container .reflection-grid-cell-59:hover ~ .reflection-content {
  transform: rotateX(-5deg) rotateY(20deg);
}
.reflection-container .reflection-grid-cell-59:hover ~ .reflection-content:before {
  transform: translateY(-5%);
}
.reflection-container .reflection-grid-cell-60 {
  top: 50%;
  left: 90%;
}
.reflection-container .reflection-grid-cell-60:hover ~ .reflection-content {
  transform: rotateX(-5deg) rotateY(25deg);
}
.reflection-container .reflection-grid-cell-60:hover ~ .reflection-content:before {
  transform: translateY(-5%);
}
.reflection-container .reflection-grid-cell-61 {
  top: 60%;
  left: 0%;
}
.reflection-container .reflection-grid-cell-61:hover ~ .reflection-content {
  transform: rotateX(-10deg) rotateY(-20deg);
}
.reflection-container .reflection-grid-cell-61:hover ~ .reflection-content:before {
  transform: translateY(-10%);
}
.reflection-container .reflection-grid-cell-62 {
  top: 60%;
  left: 10%;
}
.reflection-container .reflection-grid-cell-62:hover ~ .reflection-content {
  transform: rotateX(-10deg) rotateY(-15deg);
}
.reflection-container .reflection-grid-cell-62:hover ~ .reflection-content:before {
  transform: translateY(-10%);
}
.reflection-container .reflection-grid-cell-63 {
  top: 60%;
  left: 20%;
}
.reflection-container .reflection-grid-cell-63:hover ~ .reflection-content {
  transform: rotateX(-10deg) rotateY(-10deg);
}
.reflection-container .reflection-grid-cell-63:hover ~ .reflection-content:before {
  transform: translateY(-10%);
}
.reflection-container .reflection-grid-cell-64 {
  top: 60%;
  left: 30%;
}
.reflection-container .reflection-grid-cell-64:hover ~ .reflection-content {
  transform: rotateX(-10deg) rotateY(-5deg);
}
.reflection-container .reflection-grid-cell-64:hover ~ .reflection-content:before {
  transform: translateY(-10%);
}
.reflection-container .reflection-grid-cell-65 {
  top: 60%;
  left: 40%;
}
.reflection-container .reflection-grid-cell-65:hover ~ .reflection-content {
  transform: rotateX(-10deg) rotateY(0deg);
}
.reflection-container .reflection-grid-cell-65:hover ~ .reflection-content:before {
  transform: translateY(-10%);
}
.reflection-container .reflection-grid-cell-66 {
  top: 60%;
  left: 50%;
}
.reflection-container .reflection-grid-cell-66:hover ~ .reflection-content {
  transform: rotateX(-10deg) rotateY(5deg);
}
.reflection-container .reflection-grid-cell-66:hover ~ .reflection-content:before {
  transform: translateY(-10%);
}
.reflection-container .reflection-grid-cell-67 {
  top: 60%;
  left: 60%;
}
.reflection-container .reflection-grid-cell-67:hover ~ .reflection-content {
  transform: rotateX(-10deg) rotateY(10deg);
}
.reflection-container .reflection-grid-cell-67:hover ~ .reflection-content:before {
  transform: translateY(-10%);
}
.reflection-container .reflection-grid-cell-68 {
  top: 60%;
  left: 70%;
}
.reflection-container .reflection-grid-cell-68:hover ~ .reflection-content {
  transform: rotateX(-10deg) rotateY(15deg);
}
.reflection-container .reflection-grid-cell-68:hover ~ .reflection-content:before {
  transform: translateY(-10%);
}
.reflection-container .reflection-grid-cell-69 {
  top: 60%;
  left: 80%;
}
.reflection-container .reflection-grid-cell-69:hover ~ .reflection-content {
  transform: rotateX(-10deg) rotateY(20deg);
}
.reflection-container .reflection-grid-cell-69:hover ~ .reflection-content:before {
  transform: translateY(-10%);
}
.reflection-container .reflection-grid-cell-70 {
  top: 60%;
  left: 90%;
}
.reflection-container .reflection-grid-cell-70:hover ~ .reflection-content {
  transform: rotateX(-10deg) rotateY(25deg);
}
.reflection-container .reflection-grid-cell-70:hover ~ .reflection-content:before {
  transform: translateY(-10%);
}
.reflection-container .reflection-grid-cell-71 {
  top: 70%;
  left: 0%;
}
.reflection-container .reflection-grid-cell-71:hover ~ .reflection-content {
  transform: rotateX(-15deg) rotateY(-20deg);
}
.reflection-container .reflection-grid-cell-71:hover ~ .reflection-content:before {
  transform: translateY(-15%);
}
.reflection-container .reflection-grid-cell-72 {
  top: 70%;
  left: 10%;
}
.reflection-container .reflection-grid-cell-72:hover ~ .reflection-content {
  transform: rotateX(-15deg) rotateY(-15deg);
}
.reflection-container .reflection-grid-cell-72:hover ~ .reflection-content:before {
  transform: translateY(-15%);
}
.reflection-container .reflection-grid-cell-73 {
  top: 70%;
  left: 20%;
}
.reflection-container .reflection-grid-cell-73:hover ~ .reflection-content {
  transform: rotateX(-15deg) rotateY(-10deg);
}
.reflection-container .reflection-grid-cell-73:hover ~ .reflection-content:before {
  transform: translateY(-15%);
}
.reflection-container .reflection-grid-cell-74 {
  top: 70%;
  left: 30%;
}
.reflection-container .reflection-grid-cell-74:hover ~ .reflection-content {
  transform: rotateX(-15deg) rotateY(-5deg);
}
.reflection-container .reflection-grid-cell-74:hover ~ .reflection-content:before {
  transform: translateY(-15%);
}
.reflection-container .reflection-grid-cell-75 {
  top: 70%;
  left: 40%;
}
.reflection-container .reflection-grid-cell-75:hover ~ .reflection-content {
  transform: rotateX(-15deg) rotateY(0deg);
}
.reflection-container .reflection-grid-cell-75:hover ~ .reflection-content:before {
  transform: translateY(-15%);
}
.reflection-container .reflection-grid-cell-76 {
  top: 70%;
  left: 50%;
}
.reflection-container .reflection-grid-cell-76:hover ~ .reflection-content {
  transform: rotateX(-15deg) rotateY(5deg);
}
.reflection-container .reflection-grid-cell-76:hover ~ .reflection-content:before {
  transform: translateY(-15%);
}
.reflection-container .reflection-grid-cell-77 {
  top: 70%;
  left: 60%;
}
.reflection-container .reflection-grid-cell-77:hover ~ .reflection-content {
  transform: rotateX(-15deg) rotateY(10deg);
}
.reflection-container .reflection-grid-cell-77:hover ~ .reflection-content:before {
  transform: translateY(-15%);
}
.reflection-container .reflection-grid-cell-78 {
  top: 70%;
  left: 70%;
}
.reflection-container .reflection-grid-cell-78:hover ~ .reflection-content {
  transform: rotateX(-15deg) rotateY(15deg);
}
.reflection-container .reflection-grid-cell-78:hover ~ .reflection-content:before {
  transform: translateY(-15%);
}
.reflection-container .reflection-grid-cell-79 {
  top: 70%;
  left: 80%;
}
.reflection-container .reflection-grid-cell-79:hover ~ .reflection-content {
  transform: rotateX(-15deg) rotateY(20deg);
}
.reflection-container .reflection-grid-cell-79:hover ~ .reflection-content:before {
  transform: translateY(-15%);
}
.reflection-container .reflection-grid-cell-80 {
  top: 70%;
  left: 90%;
}
.reflection-container .reflection-grid-cell-80:hover ~ .reflection-content {
  transform: rotateX(-15deg) rotateY(25deg);
}
.reflection-container .reflection-grid-cell-80:hover ~ .reflection-content:before {
  transform: translateY(-15%);
}
.reflection-container .reflection-grid-cell-81 {
  top: 80%;
  left: 0%;
}
.reflection-container .reflection-grid-cell-81:hover ~ .reflection-content {
  transform: rotateX(-20deg) rotateY(-20deg);
}
.reflection-container .reflection-grid-cell-81:hover ~ .reflection-content:before {
  transform: translateY(-20%);
}
.reflection-container .reflection-grid-cell-82 {
  top: 80%;
  left: 10%;
}
.reflection-container .reflection-grid-cell-82:hover ~ .reflection-content {
  transform: rotateX(-20deg) rotateY(-15deg);
}
.reflection-container .reflection-grid-cell-82:hover ~ .reflection-content:before {
  transform: translateY(-20%);
}
.reflection-container .reflection-grid-cell-83 {
  top: 80%;
  left: 20%;
}
.reflection-container .reflection-grid-cell-83:hover ~ .reflection-content {
  transform: rotateX(-20deg) rotateY(-10deg);
}
.reflection-container .reflection-grid-cell-83:hover ~ .reflection-content:before {
  transform: translateY(-20%);
}
.reflection-container .reflection-grid-cell-84 {
  top: 80%;
  left: 30%;
}
.reflection-container .reflection-grid-cell-84:hover ~ .reflection-content {
  transform: rotateX(-20deg) rotateY(-5deg);
}
.reflection-container .reflection-grid-cell-84:hover ~ .reflection-content:before {
  transform: translateY(-20%);
}
.reflection-container .reflection-grid-cell-85 {
  top: 80%;
  left: 40%;
}
.reflection-container .reflection-grid-cell-85:hover ~ .reflection-content {
  transform: rotateX(-20deg) rotateY(0deg);
}
.reflection-container .reflection-grid-cell-85:hover ~ .reflection-content:before {
  transform: translateY(-20%);
}
.reflection-container .reflection-grid-cell-86 {
  top: 80%;
  left: 50%;
}
.reflection-container .reflection-grid-cell-86:hover ~ .reflection-content {
  transform: rotateX(-20deg) rotateY(5deg);
}
.reflection-container .reflection-grid-cell-86:hover ~ .reflection-content:before {
  transform: translateY(-20%);
}
.reflection-container .reflection-grid-cell-87 {
  top: 80%;
  left: 60%;
}
.reflection-container .reflection-grid-cell-87:hover ~ .reflection-content {
  transform: rotateX(-20deg) rotateY(10deg);
}
.reflection-container .reflection-grid-cell-87:hover ~ .reflection-content:before {
  transform: translateY(-20%);
}
.reflection-container .reflection-grid-cell-88 {
  top: 80%;
  left: 70%;
}
.reflection-container .reflection-grid-cell-88:hover ~ .reflection-content {
  transform: rotateX(-20deg) rotateY(15deg);
}
.reflection-container .reflection-grid-cell-88:hover ~ .reflection-content:before {
  transform: translateY(-20%);
}
.reflection-container .reflection-grid-cell-89 {
  top: 80%;
  left: 80%;
}
.reflection-container .reflection-grid-cell-89:hover ~ .reflection-content {
  transform: rotateX(-20deg) rotateY(20deg);
}
.reflection-container .reflection-grid-cell-89:hover ~ .reflection-content:before {
  transform: translateY(-20%);
}
.reflection-container .reflection-grid-cell-90 {
  top: 80%;
  left: 90%;
}
.reflection-container .reflection-grid-cell-90:hover ~ .reflection-content {
  transform: rotateX(-20deg) rotateY(25deg);
}
.reflection-container .reflection-grid-cell-90:hover ~ .reflection-content:before {
  transform: translateY(-20%);
}
.reflection-container .reflection-grid-cell-91 {
  top: 90%;
  left: 0%;
}
.reflection-container .reflection-grid-cell-91:hover ~ .reflection-content {
  transform: rotateX(-25deg) rotateY(-20deg);
}
.reflection-container .reflection-grid-cell-91:hover ~ .reflection-content:before {
  transform: translateY(-25%);
}
.reflection-container .reflection-grid-cell-92 {
  top: 90%;
  left: 10%;
}
.reflection-container .reflection-grid-cell-92:hover ~ .reflection-content {
  transform: rotateX(-25deg) rotateY(-15deg);
}
.reflection-container .reflection-grid-cell-92:hover ~ .reflection-content:before {
  transform: translateY(-25%);
}
.reflection-container .reflection-grid-cell-93 {
  top: 90%;
  left: 20%;
}
.reflection-container .reflection-grid-cell-93:hover ~ .reflection-content {
  transform: rotateX(-25deg) rotateY(-10deg);
}
.reflection-container .reflection-grid-cell-93:hover ~ .reflection-content:before {
  transform: translateY(-25%);
}
.reflection-container .reflection-grid-cell-94 {
  top: 90%;
  left: 30%;
}
.reflection-container .reflection-grid-cell-94:hover ~ .reflection-content {
  transform: rotateX(-25deg) rotateY(-5deg);
}
.reflection-container .reflection-grid-cell-94:hover ~ .reflection-content:before {
  transform: translateY(-25%);
}
.reflection-container .reflection-grid-cell-95 {
  top: 90%;
  left: 40%;
}
.reflection-container .reflection-grid-cell-95:hover ~ .reflection-content {
  transform: rotateX(-25deg) rotateY(0deg);
}
.reflection-container .reflection-grid-cell-95:hover ~ .reflection-content:before {
  transform: translateY(-25%);
}
.reflection-container .reflection-grid-cell-96 {
  top: 90%;
  left: 50%;
}
.reflection-container .reflection-grid-cell-96:hover ~ .reflection-content {
  transform: rotateX(-25deg) rotateY(5deg);
}
.reflection-container .reflection-grid-cell-96:hover ~ .reflection-content:before {
  transform: translateY(-25%);
}
.reflection-container .reflection-grid-cell-97 {
  top: 90%;
  left: 60%;
}
.reflection-container .reflection-grid-cell-97:hover ~ .reflection-content {
  transform: rotateX(-25deg) rotateY(10deg);
}
.reflection-container .reflection-grid-cell-97:hover ~ .reflection-content:before {
  transform: translateY(-25%);
}
.reflection-container .reflection-grid-cell-98 {
  top: 90%;
  left: 70%;
}
.reflection-container .reflection-grid-cell-98:hover ~ .reflection-content {
  transform: rotateX(-25deg) rotateY(15deg);
}
.reflection-container .reflection-grid-cell-98:hover ~ .reflection-content:before {
  transform: translateY(-25%);
}
.reflection-container .reflection-grid-cell-99 {
  top: 90%;
  left: 80%;
}
.reflection-container .reflection-grid-cell-99:hover ~ .reflection-content {
  transform: rotateX(-25deg) rotateY(20deg);
}
.reflection-container .reflection-grid-cell-99:hover ~ .reflection-content:before {
  transform: translateY(-25%);
}
.reflection-container .reflection-grid-cell-100 {
  top: 90%;
  left: 90%;
}
.reflection-container .reflection-grid-cell-100:hover ~ .reflection-content {
  transform: rotateX(-25deg) rotateY(25deg);
}
.reflection-container .reflection-grid-cell-100:hover ~ .reflection-content:before {
  transform: translateY(-25%);
}
</style>
</head>
<body>
  <div class='reflection-container'>
  <a class='reflection-grid-cell reflection-grid-cell-1' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-2' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-3' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-4' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-5' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-6' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-7' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-8' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-9' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-10' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-11' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-12' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-13' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-14' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-15' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-16' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-17' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-18' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-19' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-20' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-21' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-22' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-23' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-24' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-25' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-26' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-27' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-28' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-29' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-30' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-31' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-32' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-33' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-34' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-35' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-36' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-37' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-38' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-39' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-40' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-41' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-42' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-43' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-44' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-45' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-46' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-47' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-48' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-49' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-50' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-51' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-52' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-53' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-54' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-55' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-56' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-57' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-58' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-59' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-60' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-61' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-62' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-63' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-64' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-65' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-66' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-67' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-68' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-69' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-70' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-71' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-72' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-73' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-74' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-75' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-76' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-77' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-78' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-79' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-80' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-81' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-82' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-83' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-84' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-85' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-86' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-87' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-88' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-89' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-90' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-91' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-92' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-93' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-94' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-95' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-96' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-97' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-98' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-99' href='#'></a>
  <a class='reflection-grid-cell reflection-grid-cell-100' href='#'></a>
  <div class='reflection-content'></div>
</div>
</body>
</html>

5. Rotating 3D Image Cube with CSS

Made by TJ Egan. Source

<!DOCTYPE html>
<html lang="en" >
<head>
  <title></title>  
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/meyer-reset/2.0/reset.min.css">
<style>
* {
  box-sizing: border-box;
  transition: 0.3s;
}

html, body {
  height: 100%;
  width: 100%;
  overflow: hidden;
}

.scene {
  perspective: 800px;
  display: flex;
  align-items: center;
  justify-content: center;
  height: 100%;
  width: 100%;
  background: url("https://i.imgur.com/2WQui47.jpg");
  background-size: 100% 100%;
  background-position: center;
  background-repeat: no-repeat;
}
.scene:hover {
  transform: scale(1.5);
}
.scene:hover .side {
  opacity: 1;
}

.cube {
  transform-style: preserve-3d;
  position: relative;
  width: 300px;
  height: 300px;
  -webkit-animation: rotate 10s ease-in-out infinite;
          animation: rotate 10s ease-in-out infinite;
  transform-origin: center center;
}

.side {
  position: absolute;
  width: 300px;
  height: 300px;
  background-color: #333;
  opacity: 0.95;
  background-size: cover;
  background-repeat: no-repeat;
}

.back {
  transform: translateZ(-150px) rotateX(180deg);
  background-image: url(https://source.unsplash.com/featured/?nature);
}

.left {
  transform: translateX(-150px) rotateY(90deg);
  background-image: url(https://source.unsplash.com/featured/?tree);
}

.right {
  transform: translateX(150px) rotateY(90deg);
  background-image: url(https://source.unsplash.com/featured/?home);
}

.top {
  transform: translateY(-150px) rotateX(90deg);
  background-image: url(https://source.unsplash.com/featured/?car);
}

.bottom {
  transform: translateY(150px) rotateX(270deg);
  background-image: url(https://source.unsplash.com/featured/?work);
}

.front {
  transform: translateZ(150px);
  background-image: url(https://source.unsplash.com/featured/?);
}

@-webkit-keyframes rotate {
  0% {
    transform: rotateX(0);
  }
  12.5% {
    transform: rotateY(90deg);
  }
  25% {
    transform: rotateY(270deg);
  }
  37.5% {
    transform: rotateY(270deg);
  }
  50% {
    transform: rotateY(360deg);
  }
  62.5% {
    transform: rotateX(90deg);
  }
  75% {
    transform: rotateX(180deg);
  }
  87.5% {
    transform: rotateX(270deg);
  }
  100% {
    transform: rotateX(360deg);
  }
}

@keyframes rotate {
  0% {
    transform: rotateX(0);
  }
  12.5% {
    transform: rotateY(90deg);
  }
  25% {
    transform: rotateY(270deg);
  }
  37.5% {
    transform: rotateY(270deg);
  }
  50% {
    transform: rotateY(360deg);
  }
  62.5% {
    transform: rotateX(90deg);
  }
  75% {
    transform: rotateX(180deg);
  }
  87.5% {
    transform: rotateX(270deg);
  }
  100% {
    transform: rotateX(360deg);
  }
}
</style>
</head>
<body>
  <div class="scene">
  <div class="cube">
    <div class="side back"></div>
    <div class="side left"></div>
    <div class="side right"></div>
    <div class="side top"></div>
    <div class="side bottom"></div>
    <div class="side front"></div>
  </div>
</div>
  <script src='https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js'></script>
<script src='https://fb.me/react-dom-15.1.0.min.js'></script>
</body>
</html>

6. CSS 3D Image Hover Effects | 3D Flip Card Effect On Hover

Made by Okba Design. Source

<!DOCTYPE html>
<html lang="en" >
<head>
  <title></title>
<style>
@import url('https://fonts.googleapis.com/css2?family=Poppins&display=swap');
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans:wght@700&display=swap');
*, html,body{
	padding:0px;
	margin:0px;
	box-sizing:border-box;
	font-family:'Poppins', sans-serif;
	user-select:none;
}
body{
	background-color:#fff;
	width:100%;
	min-height:100vh;
	display:flex;
	justify-content:center;
	align-items:center;
}
.card{
	position:relative;
	width:280px;
	height:350px;
	perspective:1000px;
	transform-style:preserve-3d;
	cursor:pointer;
}
.card .box{
	position:absolute;
	top:0px;
	left:0px;
	width:100%;
	height:100%;
	transform-style:preserve-3d;
	transition:1s;
}
.card .front,
.card .back{
	position:absolute;
	top:0px;
	left:0px;
	width:100%;
	height:100%;
}
.card .front{
	background-image:url(https://1.bp.blogspot.com/-FQQE-TAAaNg/Xx82F7O9mUI/AAAAAAAAAME/VSGCG-1S8RcnUJnryWfvWeVrQwOLXK0tgCNcBGAsYHQ/s2048/image18.jpg);
	background-size:100% 100%;
}
.card .back{
	background-color:rgba(0,0,0,.8);
	transform:rotateY(180deg);
	transform-style:preserve-3d;
}
.card .back .content{
	background-image: linear-gradient(to right, #4facfe 0%, #00f2fe 100%);
	position:absolute;
	top:15%;
	left:0px;
	padding:10px;
	color:#fff;
	transform:translateZ(100px);
	width:100%;
}
.card:hover .box{
	transform:rotateY(180deg);
}
</style>
</head>
<body>
	<div class='card'>
		<div class='box'>
			<div class="front"></div>
			<div class="back">
				<div class="content">
					<h3>This Is Title Article</h3>
					<p>
						Lorem Ipsum is simply dummy text of the printing and typesetting industry.
					</p>
				</div>
			</div>
		</div>
	</div>
</body>
</html>

7. 3d image roulette (pure CSS)

Made by Amit Sheen. Source

<!DOCTYPE html>
<html lang="en" >
<head>
  <title></title> 
<style>
* {
    padding: 0;
    margin: 0 auto;
    box-sizing: border-box;
}

body {
    position: relative;
    background: #333;
    min-height: 100vh;
    color: #fff;
}
.cont {
    position: absolute;
    top: 50%;
    left: 50%;  
    transform: translate(-50%, -50%);
    width: 520px;
    height: 280px;
    perspective: 750px;
    perspective-origin: center;
    transform-style: preserve-3d;
}

.Face:nth-child(1) { --startAngle: 0deg; background: url('https://picsum.photos/450/150/?random'); }
.Face:nth-child(2) { --startAngle: 45deg; background: url('https://picsum.photos/450/151/?random'); }
.Face:nth-child(3) { --startAngle: 90deg; background: url('https://picsum.photos/450/152/?random'); }
.Face:nth-child(4) { --startAngle: 135deg; background: url('https://picsum.photos/450/153/?random'); }
.Face:nth-child(5) { --startAngle: 180deg; background: url('https://picsum.photos/450/154/?random'); }
.Face:nth-child(6) { --startAngle: 225deg; background: url('https://picsum.photos/450/155/?random'); }
.Face:nth-child(7) { --startAngle: 270deg; background: url('https://picsum.photos/450/156/?random'); }
.Face:nth-child(8) { --startAngle: 315deg; background: url('https://picsum.photos/450/157/?random'); }

.l .Face { --left: 153px; --speed: 5s; background-position: -300px 0; border-color: #500; }
.m .Face { --left: 0px; --speed: 7s; background-position: -150px 0; border-color: #050; }
.r .Face { --left: -153px; --speed: 6s; background-position: 0px 0; border-color: #005; }

.Face {
    position: absolute;
    top: 50%;
    left: 50%;
    width: 150px;
    height: 100px;
    background-size: 450px 150px;
    border: solid 3px;
    backface-visibility: hidden;
    animation: rotate var(--speed) ease-in-out infinite alternate forwards;
}

@keyframes rotate {
    from { transform: translate(-50%, -50%) rotateX(var(--startAngle)) translate3d(var(--left), 0, 125px); }
    to { transform: translate(-50%, -50%) rotateX(calc(var(--startAngle) + 720deg)) translate3d(var(--left), 0, 125px); }
}
</style>
</head>
<body>
  <div class="cont">
    <div class="r">
        <div class="Face"></div>
        <div class="Face"></div>
        <div class="Face"></div>
        <div class="Face"></div>
        <div class="Face"></div>
        <div class="Face"></div>
        <div class="Face"></div>
        <div class="Face"></div>
    </div>

    <div class="m">
        <div class="Face"></div>
        <div class="Face"></div>
        <div class="Face"></div>
        <div class="Face"></div>
        <div class="Face"></div>
        <div class="Face"></div>
        <div class="Face"></div>
        <div class="Face"></div>
    </div>
    
    <div class="l">
        <div class="Face"></div>
        <div class="Face"></div>
        <div class="Face"></div>
        <div class="Face"></div>
        <div class="Face"></div>
        <div class="Face"></div>
        <div class="Face"></div>
        <div class="Face"></div>
    </div>

</div> 
  <script src='https://amitsh.com/site/Codepen/Top.php?Fill=eeeeee'></script>
</body>
</html>

8. 3D CSS Image Gallery

Made by Muhammed Fathi. Source

<!DOCTYPE html>
<html lang="en" >
<head>
  <title></title>
    <link rel='stylesheet' href='https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-alpha.6/css/bootstrap.min.css'>
<style>
@import url("https://fonts.googleapis.com/css?family=Titillium+Web");
body {
  font-family: "Titillium Web", sans-serif;
  color: white;
  background: linear-gradient(to left, #ffc3a0, #ffafbd);
}

h1 {
  text-transform: uppercase;
  font-size: 4em;
}

img {
  height: 300px;
}

.cardholder {
  margin-top: 150px;
  perspective: 600px;
}
.cardholder .card {
  width: 300px;
  height: 300px;
  background-color: transparent;
  transform: rotateY(50deg);
  box-shadow: -6px 5px 13px 2px rgba(0, 0, 0, 0.25);
  transition: all 1s ease;
  color: transparent;
}
.cardholder .card:hover {
  width: 300px;
  height: 300px;
  background-color: transparent;
  transform: rotateY(0deg);
  box-shadow: 0px 0px 36px 2px rgba(0, 0, 0, 0.25);
  color: black;
}
.cardholder .card:hover p {
  background-color: white;
}
.cardholder .card:hover p.desc {
  z-index: 999;
  position: absolute;
  top: 10px;
  padding: 10px;
}
</style>
</head>
<body>
  <div class="container">
  <div class="row">
    <div class="col-md-3">
      <div class="cardholder">
        <div class="card">
          <img src="https://webdevtrick.com/wp-content/uploads/image-slider1.jpg" />
			<p class="desc">3D CSS Image Gallery </p>
        </div>
      </div>
    </div>
    
    <div class="col-md-3">
      <div class="cardholder">
        <div class="card">
           <img src="https://webdevtrick.com/wp-content/uploads/image-slider2.jpg" />
          <p class="desc">3D CSS Image Gallery </p>
        </div>
      </div>
    </div>
    
    <div class="col-md-3">
      <div class="cardholder">
        <div class="card">
          <img src="https://webdevtrick.com/wp-content/uploads/image-slider3.jpg" />
			<p class="desc">3D CSS Image Gallery </p>
        </div>
      </div>
    </div>
    
    <div class="col-md-3">
      <div class="cardholder">
        <div class="card">
          <img src="https://webdevtrick.com/wp-content/uploads/image-slider4.jpg" />
			<p class="desc">3D CSS Image Gallery </p>
        </div>
      </div>
    </div>
    
    
  </div>
</div>
</body>
</html>

9. CSS – 3D image

Made by Angelo Palmieri. Source

<!DOCTYPE html>
<html lang="en" >
<head>
  <title></title>
<style>
body {
	background: white;
}

img {
	width: 300px;
	height: 300px;
}

.container {
	perspective: 10000px;
  margin: 150px auto;
}

.cube {
	transform-style: preserve-3d;
	height: 150px;
	width: 100px;
	position: relative;
	margin: initial;
	margin: 50px auto;
}

.cube1 {
	transform: rotateX(-48deg) rotateY(26deg) rotateZ(20deg);
}

.cube2 {
	transform: rotateX(-130deg) rotateY(-18deg) rotateZ(-63deg) translateX(-332px) translateY(34px) translateZ(213px);
}

.cube3 {
	transform: rotateX(-10deg) rotateY(-58deg) rotateZ(122deg) translateX(-159px) translateY(73px) translateZ(-8px);
}

.cube div {
	position: absolute;
	border: 6px solid white;
	/* opacity: 0.95; */
	/*	width: 100px;
	height: 100px;*/
	background: black;
}

.front {
	width: 65px;
	height: 180px;
	transform: translateZ(150px);
}

.back {
	width: 65px;
	height: 180px;
	transform: translateZ(-150px);
}

.top {
	width: 65px;
	height: 290px;
	transform: rotateX(90deg) translateZ(150px);
}

.bottom {
	width: 65px;
	height: 290px;
	background: lightgreen;
	transform: rotateX(90deg) translateZ(-40px);
}

.left {
	width: 290px;
	height: 180px;
	transform: rotateY(90deg) translateZ(-150px);
}

.right {
	width: 290px;
	height: 180px;
	transform: rotateY(90deg) translateZ(-74px);
}

.cube3 .left {
	-webkit-clip-path: polygon(0% 0%, 0% 100%, 35% 100%, 34% 46%, 60% 45%, 88% 94%, 99% 94%, 100% 0%);
	clip-path: polygon(0% 0%, 0% 100%, 35% 100%, 34% 46%, 60% 45%, 89% 96%, 99% 96%, 99% 0%);
}
</style>
</head>
<body>
  <div class="container">
		<div class="cube cube1">
			<div class="front">front</div>
			<div class="back">back</div>
			<div class="top">top</div>
			<div class="bottom">bottom</div>
			<div class="left">left</div>
			<div class="right">right</div>
		</div>

		<div class="cube cube2">
			<div class="front">front</div>
			<div class="back">back</div>
			<div class="top">top</div>
			<div class="bottom">bottom</div>
			<div class="left">left</div>
			<div class="right">right</div>
		</div>

		<div class="cube cube3">
			<div class="front">front</div>
			<div class="back">back</div>
			<div class="top">top</div>
			<div class="left">left</div>
		</div>

	</div>
</body>
</html>

10. css 3D Image card

Made by priyan Darshana. Source

<!DOCTYPE html>
<html lang="en" >
<head>
  <title></title> 
  <link rel='stylesheet' href='https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/css/bootstrap.min.css'> 
<style>
.container{
	text-align:center;
	position:relative;
	margin-top:300px;
	transform:skewY(-20deg);
	
}

body{
	display:flex;
	justify-content:center;
	align-items:center;
	background:#111;
	flex-direction:column;
	overflow-x:hidden;
}

.container .pd-img-box {
	position:relative;
	transform-origin:bottom;
	transform:skewX(45deg);
	width:100%;
	height:180px;
		
}

.container .pd-img-box img{
	position:absolute;
	bottom:0;
	left:15%;
	max-width:100%;
	transition:0.5s;
	
}

.container .pd-img-box:hover img:nth-child(3){
	transform:translate(100px, -100px);
}

.container .pd-img-box:hover img:nth-child(2){
	transform:translate(50px, -50px);
	opacity:0.5;
}

.container .pd-img-box:hover img:nth-child(1){
	transform:translate(0px, 0px);
	opacity:0.1;
}
.container h2{
	color:#fff;
	font-size:50px;
	text-transform:uppercase;
}
.container .pd-skew{
	color:#fff;
	transform-origin:top;
	transform:skew(45deg);
	max-width:50%;
	margin:0 auto;
	text-align:justify;
	
}

.container a{
/* 	transform:skewX(-45deg); */
	color:white;
	border:1px solid white;
	padding:10px;
	transform-origin:top;
	background:transparent;
	display:inline-block;
	transition:0.5s;
	
	
}

.container a:hover{
	text-decoration:none;
	transition:0.5s;
	color:black;
	background:white;
	
}
</style>
</head>
<body>
  <div class="container">
	<div class="pd-img-box">
			<img src="https://covertimeline.com/app/template/25.jpg">
			<img src="https://covertimeline.com/app/template/25.jpg">
			<img src="https://covertimeline.com/app/template/25.jpg">
	</div>
	
	<h2>Priyan Designs</h2>
	<div class="pd-skew">
	<p>Lorem, ipsum dolor sit amet consectetur adipisicing elit. Sapiente dolore labore vero inventore non accusantium, omnis enim deserunt vel beatae, itaque sint facere dicta dolorem culpa voluptate, nesciunt molestias fuga.
		Lorem, ipsum dolor sit amet consectetur adipisicing elit. Sapiente dolore labore vero inventore non accusantium, omnis enim deserunt vel beatae, itaque sint facere dicta dolorem culpa voluptate, nesciunt molestias fuga.
		Lorem, ipsum dolor sit amet consectetur adipisicing elit. Sapiente dolore labore vero inventore non accusantium, omnis enim deserunt vel beatae, itaque sint facere dicta dolorem culpa voluptate, nesciunt molestias fuga.</p>
	</div>
	<a href="">Read More</a>
	</div>
</body>
</html>

11. 3d Image Stack like Gallery

Made by Rahul. Source

<!DOCTYPE html>
<html lang="en" >
<head>
  <title></title>
<style>
body{
  background: linear-gradient(to left,#808080,#B2B2B2);
  font-family: 'Hammersmith One', sans-serif;
}

.frame{
  width:640px;
  height:320px;
  position:absolute;
  margin-left:20%;
  margin-top:15%;
}

.image{
  position:absolute;
  box-shadow:5px 5px 20px #333333;
  border-radius:4px;
  cursor:pointer;
  opacity:0.7;
  
  transform-origin: 50% 100%;
  transition: 0.5s ease all;
  transform:perspective(500px) rotateX(50deg);
}

.area:hover .image{
  opacity:1;
  transition: 0.5s ease all;
  transform:perspective(500px) rotateX(0deg);
  margin-top:-100px;
  z-index:1;
}

.title{
  width:640px;
  height:50px;
  background:linear-gradient(to right,grey, black);
  position:absolute;
  margin-top:320px;
  z-index:1;
  opacity:0;
  
  transition: 0.5s ease all;
}

.frame:hover .title{
  opacity:0.5;
  box-shadow:0px -5px 5px black;
  
  transition: 1s ease all;
}

.text{
  color:white;
  font-size:2em;
  margin-left:20%;
  margin-top:325px;
  position:absolute;
  opacity:0;
  z-index:1;
  text-transform: uppercase;
  
  transition: 1s ease all;
}

.frame:hover .text{
  opacity:0.8;
  
  transition: 1s ease all;
}

.area{
  width:640px;
  height:64px;
  position:absolute;
}

.on{
  margin-top:260px;
}

.tw{
  margin-top:195px;
}

.th{
  margin-top:130px
}

.fo{
  margin-top:65px
}

.fi{
  margin-top:0px
}

.image{
  margin-top:-260px;
}
</style>
</head>
<body>
  <!-- Google Fonts-->
<link href='https://fonts.googleapis.com/css?family=Hammersmith+One' rel='stylesheet' type='text/css'>

<!-- Main Body -->
<div class="frame">
  
  <!-- Famous Stack of Images-->
  <div class="area on">
    <img class="image one" src="http://thecodeplayer.com/uploads/media/8k3N3EL.jpg"/>
  </div>
  
  <div class="area tw">
    <img class="image two" src="http://thecodeplayer.com/uploads/media/2rT2vdx.jpg"/>
  </div>
  
  <div class="area th">
    <img class="image three" src="http://thecodeplayer.com/uploads/media/00kih8g.jpg"/>
  </div>
  
  <div class="area fo">
    <img class="image four" src="http://thecodeplayer.com/uploads/media/40Ly3VB.jpg"/>
  </div>
  
  <div class="area fi">
    <img class="image five" src="http://thecodeplayer.com/uploads/media/3yiC6Yq.jpg"/>
  </div>  

  <div class="title"></div>
  <header class="text">Pixar - The Hall of Fame</header>
  
</div>
</body>
</html>