Flexbox with Images: Use a Wrapper Element Around Your Images
Make sure to use a wrapper element around your images
You need to master both Flexbox and CSS Grid in order to professionally build modern websites & web apps. If you haven't mastered both of them yet, I highly recommend going through my CSS Course.
When you use Flexbox with a lot of images, like a gallery component, you might want to consider wrapping each image in a div-element. This solves a lot of issues with images in Flexbox.
So you get this structure:
<div class="gallery">
<div class="gallery__item>
<img class="gallery__img">
</div>
<div class="gallery__item>
<img class="gallery__img">
</div>
<div class="gallery__item>
<img class="gallery__img">
</div>
<div class="gallery__item>
<img class="gallery__img">
</div>
</div>
.gallery {
display: flex;
}
.gallery__item {
}
.gallery__img {
width: 100%;
height: 100%;
object-fit: cover; /* best practice for sizing images in CSS -- to prevent distorted look for images */
}
Note that now you can't use the Flexbox functionalities on the image elements, because they are not the flex-items (their wrapper-elements are).
By the way, I think CSS is the 'bottleneck' to most websites & web apps. I believe it's the highest-ROI skill you can master.
Before I mastered CSS, I lost a ton of time & energy fiddling around with CSS.
I was learning about advanced JavaScript topics when I couldn't even implement basic layouts in CSS...
So I created a CSS course to help you avoid the same mistake. Check it out here if you're interested.
Would you like to be notified when I release a new course? You'll get early bird discounts. Sign up for my newsletter here.
Also, I show projects of upcoming courses on social media, follow me here: