How TO – Responsive Image Gallery
Learn how to create a responsive image gallery with CSS.
Image Gallery
Resize the browser window to see the responsive effect:
Example
<!DOCTYPE html>
<html>
<head>
<style>
div.gallery {
border: 1px solid #ccc;
}
div.gallery:hover {
border: 1px solid #777;
}
div.gallery img {
width: 100%;
height: auto;
}
div.desc {
padding: 15px;
text-align: center;
}
* {
box-sizing: border-box;
}
.responsive {
padding: 0 6px;
float: left;
width: 24.99999%;
}
@media only screen and (max-width: 700px) {
.responsive {
width: 49.99999%;
margin: 6px 0;
}
}
@media only screen and (max-width: 500px) {
.responsive {
width: 100%;
}
}
.clearfix:after {
content: “”;
display: table;
clear: both;
}
</style>
</head>
<body>
<h2>Responsive Image Gallery</h2>
<h4>Resize the browser window to see the effect.</h4>
<div>
<div>
<a target=”_blank” href=”img_5terre.jpg”>
<img src=”img_5terre.jpg” alt=”Cinque Terre” width=”600″ height=”400″>
</a>
<div>Add a description of the image here</div>
</div>
</div>
<div>
<div>
<a target=”_blank” href=”img_forest.jpg”>
<img src=”img_forest.jpg” alt=”Forest” width=”600″ height=”400″>
</a>
<div>Add a description of the image here</div>
</div>
</div>
<div>
<div>
<a target=”_blank” href=”img_lights.jpg”>
<img src=”img_lights.jpg” alt=”Northern Lights” width=”600″ height=”400″>
</a>
<div>Add a description of the image here</div>
</div>
</div>
<div>
<div>
<a target=”_blank” href=”img_mountains.jpg”>
<img src=”img_mountains.jpg” alt=”Mountains” width=”600″ height=”400″>
</a>
<div>Add a description of the image here</div>
</div>
</div>
<div></div>
<div style=”padding:6px;”>
<p>This example use media queries to re-arrange the images on different screen sizes: for screens larger than 700px wide, it will show four images side by side, for screens smaller than 700px, it will show two images side by side. For screens smaller than 500px, the images will stack vertically (100%).</p>
</div>
</body>
</html>
Create a Image Gallery
Step 1) Add HTML:
Example
<div class=”responsive”>
<div class=”gallery”>
<a target=”_blank” href=”img_5terre.jpg”>
<img src=”img_5terre.jpg” alt=”Cinque Terre”>
</a>
<div class=”desc”>Add a description of the image here</div>
</div>
</div>
<div class=”responsive”>
<div class=”gallery”>
<a target=”_blank” href=”img_forest.jpg”>
<img src=”img_forest.jpg” alt=”Forest”>
</a>
<div class=”desc”>Add a description of the image here</div>
</div>
</div>
<div class=”responsive”>
<div class=”gallery”>
<a target=”_blank” href=”img_lights.jpg”>
<img src=”img_lights.jpg” alt=”Northern Lights”>
</a>
<div class=”desc”>Add a description of the image here</div>
</div>
</div>
<div class=”responsive”>
<div class=”gallery”>
<a target=”_blank” href=”img_mountains.jpg”>
<img src=”img_mountains.jpg” alt=”Mountains”>
</a>
<div class=”desc”>Add a description of the image here</div>
</div>
</div>
<div class=”clearfix”></div>
Step 2) Add CSS:
This example use media queries to re-arrange the images on different screen sizes: for screens larger than 700px wide, it will show four images side by side, for screens smaller than 700px, it will show two images side by side. For screens smaller than 500px, the images will stack vertically (100%):
Example
div.gallery {
border: 1px solid #ccc;
}
div.gallery:hover {
border: 1px solid #777;
}
div.gallery img {
width: 100%;
height: auto;
}
div.desc {
padding: 15px;
text-align: center;
}
* {
box-sizing: border-box;
}
.responsive {
padding: 0 6px;
float: left;
width: 24.99999%;
}
@media only screen and (max-width: 700px) {
.responsive {
width: 49.99999%;
margin: 6px 0;
}
}
@media only screen and (max-width: 500px) {
.responsive {
width: 100%;
}
}
.clearfix:after {
content: “”;
display: table;
clear: both;
}