I have the following snippet which creates a nice image "grid" using CSS columns
.
.gallery {
columns: 4;
column-gap: 5px;
}
.gallery-item {
display: inline-block;
vertical-align: top;
position: relative;
}
.gallery-item > img {
width: 100%;
}
<div class="gallery">
<div class="gallery-item">
<img src="https://via.placeholder.com/350">
</div>
<div class="gallery-item">
<img src="https://via.placeholder.com/350x400">
</div>
<div class="gallery-item">
<img src="https://via.placeholder.com/350x100">
</div>
<div class="gallery-item">
<img src="https://via.placeholder.com/850x400">
</div>
<div class="gallery-item">
<img src="https://via.placeholder.com/450x300">
</div>
<div class="gallery-item">
<img src="https://via.placeholder.com/350x450">
</div>
<div class="gallery-item">
<img src="https://via.placeholder.com/400x250">
</div>
<div class="gallery-item">
<img src="https://via.placeholder.com/600x400">
</div>
<div class="gallery-item">
<img src="https://via.placeholder.com/500x800">
</div>
<div class="gallery-item">
<img src="https://via.placeholder.com/350x200">
</div>
<div class="gallery-item">
<img src="https://via.placeholder.com/550">
</div>
<div class="gallery-item">
<img src="https://via.placeholder.com/450x250">
</div>
<div class="gallery-item">
<img src="https://via.placeholder.com/650x300">
</div>
<div class="gallery-item">
<img src="https://via.placeholder.com/350">
</div>
<div class="gallery-item">
<img src="https://via.placeholder.com/350">
</div>
</div>
However, when there are less elements, images aren't distributed across all columns, at least using Chrome Version 81.0.4044.138 on mac os.
.gallery {
columns: 4;
column-gap: 5px;
}
.gallery-item {
display: inline-block;
vertical-align: top;
position: relative;
}
.gallery-item > img {
width: 100%;
}
<div class="gallery">
<div class="gallery-item">
<img src="https://via.placeholder.com/350">
</div>
<div class="gallery-item">
<img src="https://via.placeholder.com/350x400">
</div>
<div class="gallery-item">
<img src="https://via.placeholder.com/350x100">
</div>
<div class="gallery-item">
<img src="https://via.placeholder.com/850x400">
</div>
<div class="gallery-item">
<img src="https://via.placeholder.com/450x300">
</div>
</div>
The same happens with even less elements, and of equal height.
.gallery {
columns: 4;
column-gap: 5px;
}
.gallery-item {
display: inline-block;
vertical-align: top;
position: relative;
}
.gallery-item > img {
width: 100%;
}
<div class="gallery">
<div class="gallery-item">
<img src="https://via.placeholder.com/350">
</div>
<div class="gallery-item">
<img src="https://via.placeholder.com/350">
</div>
<div class="gallery-item">
<img src="https://via.placeholder.com/350">
</div>
</div>
Is there a way that I can force fewer elements to be distributed across all 4 columns? Or 3 columns if I have 3 elements, etc.
On Safari and Firefox, it behaves the way I want.
- This is how it looks in Chrome: https://i.stack.imgur.com/FSyMt.jpg
- And this is in Safari: https://i.stack.imgur.com/BN7H4.jpg