Это потому, что вы изменили backhground-position
, сделав изображение за пределами границы.
Сделайте это по-разному, используя масштаб и отрегулируйте источник преобразования:
div {
width: 217px;
position:relative;
margin:5px;
background-size:0 0;
}
/* keep the ratio of the image*/
div:before {
content:"";
display:block;
padding-top:50%; /* 1/2 */
}
/**/
/* the image */
div:after {
content:"";
position:absolute;
top:0;
left:0;
right:0;
bottom:0;
transition: ease-in-out 0.3s;
background-image:inherit;
background-size: 100% 100%;
}
/**/
div:hover::after {
transform:scale(2); /* make the image bigger*/
z-index:9;
transition: ease-in-out 1s;
}
/* same X different Y*/
.a::after {transform-origin:-120% -100%;}
.b::after {transform-origin:-120% -40%;}
.c::after {transform-origin:-120% 140%;}
.d::after {transform-origin:-120% 200%;}
<main>
<div class="a" style="background-image:url(https://i.picsum.photos/id/1000/400/200.jpg)"></div>
<div class="b" style="background-image:url(https://i.picsum.photos/id/100/400/200.jpg)"></div>
<div class="c" style="background-image:url(https://i.picsum.photos/id/1047/400/200.jpg)"></div>
<div class="d" style="background-image:url(https://i.picsum.photos/id/17/400/200.jpg)"></div>
</main>