JSFiddle - React, Tailwind, and code Playground
HTML
<div class="holder">
<div class="box">
<div class="front"></div>
<div class="left"></div>
</div>
</div>
CSS
.holder {
position: relative;
top: 0;
left: 0;
width: 200px;
height: 226px;
perspective: 2000px;
-moz-perspective: 2000px;
-moz-backface-visibility: hidden;
border: 1px solid transparent;
}
.box {
position: absolute;
left: 0;
top: 0;
width: 200px;
height: 226px;
background-color: transparent;
-moz-backface-visibility: hidden;
transform-style: preserve-3d;
-moz-transform-style: preserve-3d;
border: 1px solid transparent;
transform: translateZ( -100px ) rotateY(30deg);
-moz-transform: translateZ( -100px ) rotateY(30deg);
filter: url('data:image/svg+xml;utf8,<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><filter id="gaussian_blur"><feGaussianBlur in="SourceGraphic" stdDeviation="0" /></filter></defs></svg>#gaussian_blur');
transition: transform 0.5s;
-moz-transition: transform 0.5s;
}
.box div {
position: absolute;
margin: 0;
display: block;
}
.box .front {
left: 0;
right: 0;
top: 0;
bottom: 0;
-moz-backface-visibility: hidden;
transform: rotateX(0deg) translateZ(10px);
-moz-transform: rotateX(0deg) translateZ(10px);
border: 1px solid transparent;
background-color: grey;
background-size: cover;
background-position: center;
background-repeat: no-repeat;
outline: 1px solid transparent;
}
.box .left {
left: 0;
top: 0;
bottom: 0;
width: 10px;
-moz-backface-visibility: hidden;
background-color: black;
background-size: cover;
background-position: left;
background-repeat: no-repeat;
}