I\'m trying to use both the css property object-fit: cover on an img element to have my image filling its containing div and tra
You can create an extra layer, with class wrap, and use this to make the zoom effect
Your styles are the same, but reasigned
html, body {
width: 100%;
height: 100%
}
div.category {
width: 80%;
height: 150px;
background-color: yellow;
margin: 20px;
overflow: hidden;
position: relative;
}
.wrap {
position: absolute;
height: 100%;
width: 100%;
}
div.category .wrap img {
display: block;
height: 100%;
width: 100%;
object-fit: cover;
object-position: center;
}
/* Transformations */
div.category .wrap {
transition: transform 0.35s;
transform: scale(1.12);
}
div.category:hover .wrap {
transform: scale(1);
}
<div>
<div class="category">
<div class="wrap">
<img src="http://www.4freephotos.com/images/batch/Elephant-dusting674.jpg" />
</div>
</div>
<div class="category">
<div class="wrap">
<img src="http://www.4freephotos.com/images/batch/Bananas-and-kiwi-221.jpg" />
</div>
</div>
<div class="category">
<div class="wrap">
<img src="http://placehold.it/1200x950&text=1200x950+-+Category+3+-" />
</div>
</div>
</div>
After testing it seems that backface-visibility, translateZ, and translate3d which are required to prevent the transform flicker, break object-fit and background-size. If your goal is to center the image then you can use position: absolute and translate like in the example below.
div.category {
width: 80%;
height: 150px;
margin: 20px;
position: relative;
overflow: hidden;
}
img {
display: block;
width: 100%;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%) scale(1.12); /* order is important here*/
backface-visibility: hidden;
transition: transform 0.35s;
}
div.category:hover img {
transform: translate(-50%, -50%) scale(1);
}
<div>
<div class="category">
<img src="http://www.4freephotos.com/images/batch/Elephant-dusting674.jpg" />
</div>
<div class="category">
<img src="http://www.4freephotos.com/images/batch/Bananas-and-kiwi-221.jpg" />
</div>
<div class="category">
<img src="http://placehold.it/1200x950&text=1200x950+-+Category+3+-" />
</div>
</div>
http://jsfiddle.net/moogs/r1s1rtLk/4/