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');
    }
})