You are currently viewing CSS: Grid-Row – Placing Grid Items by Row

CSS: Grid-Row – Placing Grid Items by Row

CSS Grid Layout is a powerful tool for creating complex and responsive web layouts. One of its key features is the ability to control the placement of grid items within rows using the grid-row property. This property allows developers to define the starting and ending positions of grid items within the rows of a grid container, providing precise control over the layout and enabling sophisticated designs.

The grid-row property is particularly useful when you need to span grid items across multiple rows or position them within specific rows. By mastering this property, developers can create well-structured and visually appealing web pages. In this article, we will explore the grid-row property in detail, starting with a basic setup and moving on to practical examples demonstrating its usage.

Basic Setup

Before we dive into the details of the grid-row property, let’s set up a basic example to demonstrate its functionality. We’ll create a simple HTML structure with some CSS to define our grid container and items.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>CSS Grid-Row Example</title>

    <style>

        .grid-container {
            display: grid;
            grid-template-rows: 100px 100px 100px;
            gap: 10px;
            margin: 20px;
            padding: 20px;
            background-color: #f0f0f0;
        }

        .grid-item {
            background-color: #ccc;
            padding: 20px;
            text-align: center;
        }

    </style>

</head>
<body>

    <div class="grid-container">
        <div class="grid-item">Item 1</div>
        <div class="grid-item">Item 2</div>
        <div class="grid-item">Item 3</div>
        <div class="grid-item">Item 4</div>
        <div class="grid-item">Item 5</div>
        <div class="grid-item">Item 6</div>
    </div>

</body>
</html>

In this code, we define a .grid-container element with the display property set to grid. The grid-template-rows property creates a basic grid structure with three rows. Each .grid-item has some padding and background color to distinguish it visually. This basic setup provides a foundation for exploring the grid-row property.

Understanding the grid-row Property

The grid-row property in CSS allows you to specify the starting and ending row lines for a grid item within a grid container. It is a shorthand property that combines grid-row-start and grid-row-end properties. The syntax for grid-row is:

element {
    grid-row: start / end;
}

Where start and end can be:

  • Line numbers (e.g., 1 / 3)
  • Named grid lines (e.g., header-start / header-end)
  • The keyword span followed by a number to specify the number of rows to span (e.g., span 2)

By using the grid-row property, you can control the exact placement and spanning of grid items within the rows, providing flexibility and precision in your layout design.

Practical Examples of grid-row

Let’s explore practical examples of using the grid-row property in different scenarios.

Placing Grid Items at Specific Row Positions

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>CSS Grid-Row Example</title>

    <style>

        .grid-container {
            display: grid;
            grid-template-rows: 100px 100px 100px;
            gap: 10px;
            margin: 20px;
            padding: 20px;
            background-color: #f0f0f0;
        }

        .grid-item {
            background-color: #ccc;
            padding: 20px;
            text-align: center;
        }

        .item-1 {
            grid-row: 1 / 2;
        }

        .item-2 {
            grid-row: 2 / 3;
        }

        .item-3 {
            grid-row: 3 / 4;
        }

    </style>

</head>
<body>

    <div class="grid-container">
        <div class="grid-item item-1">Item 1</div>
        <div class="grid-item item-2">Item 2</div>
        <div class="grid-item item-3">Item 3</div>
        <div class="grid-item">Item 4</div>
        <div class="grid-item">Item 5</div>
        <div class="grid-item">Item 6</div>
    </div>

</body>
</html>

In this example, the grid-row property is used to place the first three items at specific row positions within the grid. The first item starts at row line 1 and ends at row line 2, the second item starts at row line 2 and ends at row line 3, and the third item starts at row line 3 and ends at row line 4. This precise placement allows for a structured and organized layout.

Spanning Grid Items Across Multiple Rows

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>CSS Grid-Row Example</title>

    <style>

        .grid-container {
            display: grid;
            grid-template-rows: 100px 100px 100px;
            gap: 10px;
            margin: 20px;
            padding: 20px;
            background-color: #f0f0f0;
        }

        .grid-item {
            background-color: #ccc;
            padding: 20px;
            text-align: center;
        }

        .item-span {
            grid-row: span 2;
        }

    </style>

</head>
<body>

    <div class="grid-container">
        <div class="grid-item item-span">Item 1</div>
        <div class="grid-item">Item 2</div>
        <div class="grid-item">Item 3</div>
        <div class="grid-item">Item 4</div>
        <div class="grid-item">Item 5</div>
        <div class="grid-item">Item 6</div>
    </div>

</body>
</html>

In this example, the first item spans two rows using the grid-row property with the value span 2. This means that the item will occupy two row tracks, starting from its initial position. This approach is useful for creating layouts where certain items need to take up more vertical space than others.

Combining Grid-Row with Other Properties

The grid-row property can be combined with other CSS Grid properties to create more sophisticated and flexible layouts. Let’s see an example where we combine grid-row with grid-template-areas.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>CSS Grid-Row Example</title>

    <style>

        .grid-container {
            display: grid;
            grid-template-rows: 100px 100px 100px;
            grid-template-areas:
                "header header header"
                "sidebar main main"
                "footer footer footer";
            gap: 10px;
            margin: 20px;
            padding: 20px;
            background-color: #f0f0f0;
        }

        .header {
            grid-area: header;
            background-color: #ccc;
            padding: 20px;
            text-align: center;
        }

        .sidebar {
            grid-area: sidebar;
            background-color: #bbb;
            padding: 20px;
        }

        .main {
            grid-area: main;
            background-color: #aaa;
            padding: 20px;
        }

        .footer {
            grid-area: footer;
            background-color: #999;
            padding: 20px;
            text-align: center;
        }

        .extra-item {
            grid-row: 1 / span 2;
            background-color: #777;
            padding: 20px;
            text-align: center;
        }

    </style>

</head>
<body>

    <div class="grid-container">
        <div class="header">Header</div>
        <div class="sidebar">Sidebar</div>
        <div class="main">Main Content</div>
        <div class="footer">Footer</div>
        <div class="extra-item">Extra Item</div>
    </div>

</body>
</html>

In this example, the .grid-container class uses both grid-template-areas and grid-row. The grid-template-areas property defines a specific layout for the header, sidebar, main content, and footer. The .extra-item class uses the grid-row property to start at the first row and span two rows. This combination allows for a flexible layout that can adapt to extra content dynamically.

Conclusion

The grid-row property in CSS Grid is a valuable tool for controlling the placement of grid items within rows. By using this property, developers can specify the starting and ending row lines for grid items, span items across multiple rows, and create precise and organized layouts. The grid-row property simplifies the process of managing grid items, making it easier to create responsive and well-structured layouts.

Experimenting with different values for grid-row and combining it with other CSS Grid properties allows for the creation of sophisticated and visually engaging webpages. The examples provided in this article serve as a foundation, encouraging further exploration and creativity in using CSS Grid and the grid-row property to design responsive and user-friendly webpages.

Leave a Reply