CSS Grid: Auto-Shrink empty rows?

Viewed 149

I want to achive a grid where a block of n elements is splitted by a 100% width banner. For example, a 100% width banner appears every 8 elements on a desktop. For tablets, a 100% width banner appears after 6 elements. For this requirement, CSS Grid seems the perfect tool.

Here is an example for the tablet: Example for Desktop Layout

I implemented this layout with the following code:

#gridWrapper {
            display: grid;
            grid-template-columns: repeat(3, 1fr);
            grid-auto-rows: minmax(0, 50px);
            gap: 10px;
        }

        .element {
            background-color: #ccc;
            text-align: center;
        }

        .banner1 {
            background-color: rebeccapurple;
            grid-column: 1/4;
            grid-row: 3/3;
        }

        .banner2 {
            background-color: orange;
            grid-column: 1/4;
            grid-row: 6/6;
        }
<div id="gridWrapper">
    <div class="element element-1">1</div>
    <div class="element element-2">2</div>
    <div class="element element-3">3</div>
    <div class="element element-4">4</div>
    <div class="element element-5">5</div>
    <div class="element element-6">6</div>
    <div class="element element-7">7</div>
    <div class="element element-8">8</div>
    <div class="element element-9">9</div>
    <div class="element element-10">10</div>
    <div class="element element-11">11</div>
    <div class="element element-12">12</div>
    <div class="element element-13">13</div>
    <div class="element element-14">14</div>
    <div class="element element-15">15</div>
    <div class="element element-16">16</div>
    <div class="element element-17">17</div>
    <div class="element element-18">18</div>

    <div class="banner1">banner1</div>
    <div class="banner2">banner2</div>
</div>

But here comes the problem: When there are not enough elements, the banner is hanging in the air: 100% banner floating around

I originally thought that I could "skip" empty rows with grid-auto-rows: minmax(0, 50px), but it does not work. Is there any option to "auto-dock" the 100% width banner to the next empty row? enter image description here

0 Answers
Related