JSFiddle - React, Tailwind, and code Playground
HTML
<div class="flip-card">
<div class="flip-card-inner">
<div class="flip-card-front">
</div>
<div class="flip-card-back">
</div>
</div>
</div>
<div class="flip-card">
<div class="flip-card-inner">
<div class="flip-card-front">
</div>
<div class="flip-card-back">
</div>
</div>
</div>
CSS
.flip-card {
background-color: transparent;
width: 300px;
height: 300px;
perspective: 1000px;
}
img{
width: 300px;
height: 300px;
}
.flip-card-inner {
position: relative;
width: 100%;
height: 100%;
text-align: center;
transition: transform 0.8s;
transform-style: preserve-3d;
}
.flip-card:not(.flip-card_flipped):hover .flip-card-inner,
.flip-card_flipped .flip-card-inner {
transform: rotateY(180deg);
}
.flip-card-front, .flip-card-back {
position: absolute;
width: 100%;
height: 100%;
backface-visibility: hidden;
}
.flip-card-front {
background-color: #bbb;
color: black;
}
.flip-card-back {
background-color: dodgerblue;
color: white;
transform: rotateY(180deg);
}
JavaScript
const cards = document.querySelectorAll('.flip-card');
let timerId = setTimeout(() => {
cards.forEach(card => {
card.classList.add('flip-card_flipped');
card.removeEventListener('mouseover', flipped);
});
}, 5000);
function flipped() {
clearTimeout(timerId);
cards.forEach(card => card.removeEventListener('mouseover', flipped));
}
cards.forEach(card => card.addEventListener('mouseover', flipped));