Seamless Responsive Photo Grid - Pure CSS !

Let's say you have a bunch of images you want to display, and the goal is to get them edge-to-edge on the browser window with no gaps. Just because you think that would be cool. They are of all different sizes. You don't care if they are resized, but they should maintain their aspect ratio. Like this:




Ideally we (CSS-Tricks.cOm) keep it pretty chill on the markup, like:
<section id="photos">
  <img alt="Cute cat" src="images/cat-1.jpg" />
  <img alt="Serious cat" src="images/cat-2.jpg" />
  ...
</section>

And with the CSS:
#photos {
  /* Prevent vertical gaps */
  line-height: 0;
   
  -webkit-column-count: 5;
  -webkit-column-gap:   0px;
  -moz-column-count:    5;
  -moz-column-gap:      0px;
  column-count:         5;
  column-gap:           0px;  
}

#photos img {
  /* Just in case there are inline attributes */
  width: 100% !important;
  height: auto !important;
}

But what about when the browser window starts getting narrow? 5 columns might be great for a very large browser window but too many for a smaller browser window (5 images side-by-side might get too narrow). We can fix the problem super easily by having media queries test the browser width and adjust the number of columns accordingly.

@media (max-width: 1200px) {
  #photos {
  -moz-column-count:    4;
  -webkit-column-count: 4;
  column-count:         4;
  }
}
@media (max-width: 1000px) {
  #photos {
  -moz-column-count:    3;
  -webkit-column-count: 3;
  column-count:         3;
  }
}
@media (max-width: 800px) {
  #photos {
  -moz-column-count:    2;
  -webkit-column-count: 2;
  column-count:         2;
  }
}
@media (max-width: 400px) {
  #photos {
  -moz-column-count:    1;
  -webkit-column-count: 1;
  column-count:         1;
  }
}

I have to say, it's perfect!! :v
Source from CSS-tricks.com
Seamless Responsive Photo Grid - Pure CSS ! Seamless Responsive Photo Grid - Pure CSS ! Reviewed by Le Huy Hoang on November 18, 2016 Rating: 5

No comments:

Powered by Blogger.