I have used flexbox to create a grid which allows 3 images be aligned side by side. I have given them a width of 33.333% so they fit exactly.
However now I want to introduce a css hover effect where another image fades in when you hover over an image.
I have the effect working fine, however the issue I am having is that the image which fades in on hover is too big and as a result only about 75% of it appears in the container.
I got the code for the fade effect here, but although I have been manipulating the code I can't get the image to fit exactly 100% in the container. Both images are the exact same dimensions.
.container {
display: flex;
flex-wrap: wrap;
}
.box {
flex: 1
}
.bord {
padding: 0;
margin: 0;
-webkit-box-sizing: border-box;
}
.crossfd {
background: url("https://picsum.photos/200/200?image=0");
display: inline-block;
background-size: cover;
}
.crossfd img {
-webkit-transition: opacity 1s ease-in-out;
-moz-transition: opacity 1s ease-in-out;
-o-transition: opacity 1s ease-in-out;
transition: opacity 1s ease-in-out;
}
.crossfd img:hover {
opacity: 0;
}
<div class="container">
<div class="box bord crossfd">
<img src="https://picsum.photos/200/300?image=1" width="100%" alt="Lou" />
</div>
<div class="box bord crossfd">
<img src="https://picsum.photos/200/300?image=2" width="100%" alt="Lou" />
</div>
<div class="box bord crossfd">
<img src="https://picsum.photos/200/300?image=3" width="100%" alt="Lou" />
</div>
</div>
Try adding background-size: cover;
on .crossfd
class.
You may also try contain
or 100%
, read the spec on MDN.
The
background-size
CSS property specifies the size of the background images. The size of the image can be fully constrained or only partially in order to preserve its intrinsic ratio.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With