JSFiddle - React, Tailwind, and code Playground
HTML
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css">
<div class="item-circled">
<div class="face-container center-block text-center">
<div class="face-card">
<!-- Front side -->
<div class="face-1 front">
<p>front</p>
</div>
<!-- Back side -->
<div class="face-1 back">
<p>back</p>
</div>
</div>
<!-- Spinner element -->
<div class="dashed-border"></div>
</div> <!-- face-conteiner -->
</div> <!-- item-circled -->
CSS
.item-circled {
position: relative;
width: 157.5px;
margin: 5% 40px;
display: inline-block;
}
.item-circled .face-container {
position: relative;
width: 157.5px;
height: 157.5px;
z-index: 1;
perspective: 1000px;
}
.item-circled .face-card {
width: 100%;
height: 100%;
transform-style: preserve-3d;
border-radius: 50%;
transition: all .5s linear;
}
.item-circled .face-container:hover .face-card {
transform: rotateY(180deg);
border-radius: 50%;
}
.item-circled .face-1 {
position: absolute;
width: 100%;
height: 100%;
backface-visibility: hidden;
overflow: hidden;
border-radius: 50%;
}
.item-circled .face-1.front{
background-color: #f7eebe;
width: 100%;
height: 100%
}
.item-circled .face-1.back {
display: block;
box-sizing: border-box;
padding: 35px 13px;
text-align: center;
background-color: #1f4e79;
transform: rotateY(180deg);
border-radius: 50%;
}
.item-circled .dashed-border {
position: absolute;
border-radius: 50%;
border: 2px dashed #18d9ec;
height: 187.5px;
width: 187.5px;
top: -15px;
left: -15px;
}
.item-circled:hover .dashed-border {
animation-duration: 0.5s;
animation-timing-function: linear;
animation-name: spiner;
animation-iteration-count: infinite;
}
@keyframes spiner {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}