JSFiddle - React, Tailwind, and code Playground
by Tony Realovich
HTML
<div class="card-list">
<div class="card-list__item">
<div class="card">
<div class="card__wrap">
<div class="card__cover">
<img src="http://placekitten.com/245/300" alt="" class="card__cover-img">
</div>
</div>
</div>
</div>
<div class="card-list__item">
<div class="card">
<div class="card__wrap">
<div class="card__cover">
<img src="http://placekitten.com/245/300" alt="" class="card__cover-img">
</div>
</div>
</div>
</div>
<div class="card-list__item">
<div class="card">
<div class="card__wrap">
<div class="card__cover">
<img src="http://placekitten.com/245/300" alt="" class="card__cover-img">
</div>
</div>
</div>
</div>
<div class="card-list__item">
<div class="card">
<div class="card__wrap">
<div class="card__cover">
<img src="http://placekitten.com/245/300" alt="" class="card__cover-img">
</div>
</div>
</div>
</div>
</div>
SCSS
@keyframes img-hover-in {
0% {
transform: scale(1);
}
80% {
transform: scale(1.2);
}
100% {
transform: scale(1.15);
}
}
@keyframes img-hover-out {
0% {
transform: scale(1.15);
}
20% {
transform: scale(1.2);
}
100% {
transform: scale(1);
}
}
.card-list {
display: flex;
&__item {
width: 25%;
overflow: hidden;
}
}
.card {
position: relative;
overflow: hidden;
line-height: 0;
&:hover {
.card__cover-img {
animation-name: img-hover-in;
animation-duration: .5s;
animation-fill-mode: forwards;
}
}
&__cover {
&-img {
width: 100%;
height: auto;
animation-name: img-hover-out;
animation-duration: .5s;
animation-fill-mode: forwards;
}
}
}