JSFiddle - React, Tailwind, and code Playground
HTML
<div id='trigger'>Hover Me</div>
<div id='item' class=""></div>
CSS
#trigger
{
position: relative;
display: inline-block;
padding: 5px 10px;
margin: 0 0 10px 0;
background: teal;
color: white;
font-family: sans-serif;
}
#item
{
position: relative;
height: 100px;
width: 100px;
background: red;
transform-origin: 50% 0%;
}
#item.flipped
{
animation: flipper 5s;
animation-fill-mode: both;
}
#item.flippeUp
{
animation: flipperUp 5s;
animation-fill-mode: both;
}
#item.no-animation
{
-webkit-animation: none;
animation: none;
}
@keyframes flipper
{
0% { transform: perspective(350px) rotateX(-90deg); }
33% { transform: perspective(350px) rotateX(0deg); }
66% { transform: perspective(350px) rotateX(10deg); }
100% { transform: perspective(350px) rotateX(0deg); }
}
@-webkit-keyframes flipper
{
0% { -webkit-transform: perspective(350px) rotateX(-90deg); }
33% { -webkit-transform: perspective(350px) rotateX(0deg); }
66% { -webkit-transform: perspective(350px) rotateX(10deg); }
100% { -webkit-transform: perspective(350px) rotateX(0deg); }
}
@keyframes flipperUp
{
0% { transform: perspective(350px) rotateX(0deg); }
33% { transform: perspective(350px) rotateX(10deg); }
66% { transform: perspective(350px) rotateX(0deg); }
100% { transform: perspective(350px) rotateX(-90deg); }
}
@-webkit-keyframes flipperUp
{
0% { -webkit-transform: perspective(350px) rotateX(0deg); }
33% { -webkit-transform: perspective(350px) rotateX(10deg); }
66% { -webkit-transform: perspective(350px) rotateX(0deg); }
100% { -webkit-transform: perspective(350px) rotateX(-90deg); }
}
JavaScript
$('#trigger').on({
mouseenter: function(){
$('#item').removeClass('flippeUp');
$('#item').addClass('flipped');
},
mouseleave: function(){
$('#item').removeClass('flipped');
$('#item').addClass('flippeUp');
}
})