How do I create a responsive image grid with varying column widths using CSS?

Creating a Responsive Image Grid with Varying Column Widths Using CSS

In today’s world, responsive design is essential for creating web pages that look great and function well on a variety of devices and screen sizes. One common design element is the image grid, which can be used to showcase a collection of images in a visually appealing way. In this blog post, we’ll learn how to create a responsive image grid with varying column widths using only CSS. We’ll make use of the CSS Grid layout and media queries to achieve our goal.

Step 1: Create the HTML Structure

First, let’s create the basic HTML structure for our image grid. We’ll use a simple container div and add child div elements with the class “grid-item” for each image.

<!-- HTML -->
<!DOCTYPE html>
<html lang="en">
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Responsive Image Grid with Varying Column Widths</title>
  <link rel="stylesheet" href="styles.css">
  <div class="grid-container">
    <div class="grid-item">
      <img src="path/to/image1.jpg" alt="Image description">
    <div class="grid-item">
      <img src="path/to/image2.jpg" alt="Image description">
    <!-- Add more grid-items as needed -->

Step 2: Define the CSS Grid Layout

Now let’s style our grid container and grid items using CSS Grid. We’ll define the grid layout and set up the gap between grid items.

/* CSS */
.grid-container {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
grid-gap: 10px;
margin: 0 auto;
max-width: 1200px;

.grid-item {
position: relative;
overflow: hidden;

.grid-item img {
width: 100%;
height: auto;
display: block;
object-fit: cover;
transition: transform 0.3s ease;

.grid-item:hover img {
transform: scale(1.1);

Step 3: Implement Varying Column Widths with Media Queries

To create varying column widths, we’ll use media queries to adjust the grid-template-columns property based on different screen sizes.

/* CSS */
@media (min-width: 768px) {
.grid-container {
grid-template-columns: 1fr 2fr 1fr;

@media (min-width: 1024px) {
.grid-container {
grid-template-columns: 1fr 1fr 2fr 1fr;

In this example, we’ve created three different column configurations based on screen size:

  1. For screens smaller than 768px, the grid will have equal-width columns.
  2. For screens between 768px and 1024px, the grid will have three columns with a wider middle column.
  3. For screens larger than 1024px, the grid will have four columns with a wider third column.

You can adjust these breakpoints and column configurations to fit your design needs.


In this blog post, we’ve learned how to create a responsive image grid with varying column widths using CSS Grid and media queries. This approach allows us to create an aesthetically pleasing and functional layout that works well across various screen sizes and devices. With a bit of experimentation, you can easily adapt this technique to create other unique grid layouts for your projects.

Got question?

Submit it here

© All rights reserved.