🌟✨Design Dynamic and Responsive Layouts with CSS Grid Mastery 🌟✨

CSS Grid Layout: A Beginner’s Guide

Empower your web design journey with CSS Grid. Start building captivating layouts now and see your designs come to life! 🚀✨ #CSSGrid #WebDesign”

Theodore John.S
5 min readSep 29, 2023

Are you ready to harness the power of CSS Grid Layout? This essential web layout tool can help you create stunning, responsive designs with ease. In this beginner’s guide, we’ll break down CSS Grid’s core concepts and provide plenty of practical examples to help you grasp this essential skill.

Photo by Isaiah Bekkers on Unsplash

At its core, CSS Grid Layout is like a virtual graph paper, comprised of intersecting horizontal and vertical lines forming columns and rows. These lines define where elements can be placed on a web page, offering unprecedented control over your layout. Let’s dive into the key features:

1. Fixed vs. Flexible Sizes

Grids allow you to set fixed sizes (e.g., pixel widths) or use flexible sizes (percentages or the fr unit) for responsive layouts. Let's explore both:

/* Fixed sizes */
.wrapper {
display: grid;
grid-template-columns: 200px 200px 200px;
}
/* Flexible sizes with 'fr' unit */
.wrapper {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
}

Here, the fr unit divides available space equally among the columns.

2. Precise Item Placement

With CSS Grid, you can precisely position items within the grid using line numbers, names, or grid areas. If you omit a position, Grid’s smart algorithm handles it for you.

/* Positioning by line numbers */
.box1 {
grid-column-start: 1;
grid-column-end: 4;
grid-row-start: 1;
grid-row-end: 3;
}
/* Positioning by line numbers (shorthand) */
.box1 {
grid-column: 1 / 4;
grid-row: 1 / 3;
}

3. Adding More Tracks

You can explicitly define rows and columns with grid-template-columns and grid-template-rows. Grid is flexible enough to add extra rows and columns as needed.

/* Creating more columns as needed */
.wrapper {
display: grid;
grid-template-columns: repeat(3, 1fr);
}

4. Control Over Alignment

Grid provides alignment features to control how items align within grid areas and how the entire grid aligns within its container.

/* Aligning items */
.wrapper {
display: grid;
justify-items: center; /* Horizontally center items */
align-items: center; /* Vertically center items */
}

5. Handling Overlapping Content

Grid allows items to occupy the same grid cell or area and control their stacking order using the z-index property.

/* Controlling stacking order */
.box1 {
grid-column-start: 1;
grid-column-end: 4;
grid-row-start: 1;
grid-row-end: 3;
z-index: 2;
}
.box2 {
grid-column-start: 1;
grid-row-start: 2;
grid-row-end: 4;
z-index: 1;
}

By adjusting z-index, you can control which item appears on top.

Becoming a Grid Master

To harness the power of CSS Grid, designate an element as a grid container by setting its display property to grid or inline-grid. All of its direct children become grid items.

<div class="wrapper">
<div>One</div>
<div>Two</div>
<div>Three</div>
</div>
/* Creating a grid container */
.wrapper {
display: grid;
}

Defining Grid Tracks

Grid tracks are the spaces between adjacent lines on the grid. Rows and columns are defined using grid-template-rows and grid-template-columns.

/* Defining rows and columns */
.wrapper {
display: grid;
grid-template-columns: 1fr 2fr; /* Two columns, first 1 fraction, second 2 fractions */
}

The fr unit dynamically allocates space based on the available width.

Simplifying with Repeat Notation

For large grids, simplify track listings with repeat() notation.

/* Simplified grid definition */
.wrapper {
display: grid;
grid-template-columns: repeat(4, 1fr); /* Four equally sized columns */
}

This notation makes your code cleaner and more maintainable.

Implicit and Explicit Grids

Grids can have both explicit and implicit rows and columns. Explicit rows and columns are defined using grid-template-columns and grid-template-rows. Implicit tracks are automatically generated.

/* Implicit grid with auto-sized rows */
.wrapper {
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-auto-rows: minmax(100px, auto); /* Rows won't shrink below 100px */
}

Implicit rows adjust to content, ensuring they’re at least 100px tall.

Line-Based Positioning

Grid numbers lines automatically for positioning. Use grid-column-start, grid-column-end, grid-row-start, and grid-row-end properties to place items.

/* Line-based item placement */
.box1 {
grid-column-start: 1;
grid-column-end: 4;
grid-row-start: 1;
grid-row-end: 3;
}

Simplify with shorthand properties for concise code.

Grid Cells and Areas

Grid cells are the smallest units, similar to table cells. Items automatically occupy one cell each. You can also span items across multiple cells to create grid areas.

Creating Gutters

Add gaps between grid cells using column-gap, row-gap, or gap properties for cleaner, organized layouts.

/* Creating gutters between cells */
.wrapper {
display: grid;
grid-template-columns: repeat(3, 1fr);
column-gap: 10px;
row-gap: 1em;
}

Gutters improve spacing in your design.

Nesting Grids

Grid items can become grid containers, allowing nested grids for more complex layouts.

Subgrid

Subgrid simplifies nested grids by inheriting the track definition of the parent grid, ensuring alignment consistency.

Layering with z-index

Grid items can overlap, and you can control the stacking order using the z-index property.

Example

Here’s an HTML and CSS code example that covers the discussed topics about CSS Grid:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CSS Grid Example</title>
<style>
/* Create a grid container */
.wrapper {
display: grid;
grid-template-columns: 1fr 2fr; /* Two columns, first 1 fraction, second 2 fractions */
grid-gap: 10px; /* Gap between grid cells */
}
/* Style for grid items */
.item {
background-color: #3498db;
color: white;
padding: 20px;
text-align: center;
}
/* Spanning an item across grid cells */
.item2 {
grid-column: span 2; /* Spans across 2 columns */
}
/* Positioning items using line numbers */
.item3 {
grid-column-start: 1;
grid-column-end: 3; /* Spans from column 1 to 3 */
}
/* Aligning items in the grid */
.wrapper {
justify-items: center; /* Horizontally center items */
align-items: center; /* Vertically center items */
}
</style>
</head>
<body>
<div class="wrapper">
<div class="item">Item 1</div>
<div class="item item2">Item 2 (Span 2 columns)</div>
<div class="item item3">Item 3 (Span 2 columns)</div>
<div class="item">Item 4</div>
</div>
</body>
</html>

In this example:

  • We create a grid container with two columns using grid-template-columns.
  • Grid items are styled with different background colors and text colors.
  • We span an item across two columns using grid-column: span 2.
  • Another item is positioned by specifying start and end column lines.
  • We use justify-items and align-items to center items both horizontally and vertically within the grid.

Summary

Now, armed with these CSS Grid fundamentals and practical examples, you’re ready to create dynamic, responsive layouts for your web projects. Dive in, experiment, and unlock the full potential of CSS Grid Layout!

Hope the above article gave a better understanding. If you have any questions regarding the areas I have discussed in this article, areas of improvement don’t hesitate to comment below.

[Disclosure: This article is a collaborative creation blending my own ideation with the assistance of ChatGPT for optimal articulation.]

--

--

Theodore John.S

Passionate self-taught front-end dev. HTML, CSS, JS, React | Creating pixel-perfect web experiences |🌐Find me on LinkedIn: https://www.linkedin.com/in/stj/