Reputation: 355
I'm interested does CSS Grid has feature to create repeatable grid-template-areas
?
To explain the feature i created this example,
.grid {
display: grid;
grid-template-columns: repeat(3, 1fr) 6rem;
grid-template-areas:
'. . . button'
'. . . button'
'. . . button'
'. . . button';
grid-gap: 1rem;
}
.item {
background: #add8e6;
padding: 1rem;
}
.button {
grid-area: button;
background: #ffc0cb;
padding: 1rem;
}
<div class="grid">
<div class="item">Item</div>
<div class="item">Item</div>
<div class="item">Item</div>
<div class="item">Item</div>
<div class="item">Item</div>
<div class="item">Item</div>
<div class="item">Item</div>
<div class="item">Item</div>
<div class="item">Item</div>
<div class="item">Item</div>
<div class="item">Item</div>
<div class="item">Item</div>
<div class="button">Button</div>
</div>
As you can see in example, grid-template-areas
property contains several repeats. The .item
elements has potentially infinite number, so, infinite grid-template-areas
is not acceptable.
I know the solution when here are will be nested grid of .item
's but I'm actually interested in implementation of this solution in single grid, like proof of concept.
Upvotes: 0
Views: 175
Reputation: 272842
You can combine grid and positionning like below:
.grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
padding-right:7rem;
grid-gap: 1rem;
position:relative;
}
.item {
background: #add8e6;
padding: 1rem;
}
.button {
position:absolute;
top:0;
right:0;
bottom:0;
width:6rem;
background: #ffc0cb;
padding: 1rem;
box-sizing:border-box;
}
<div class="grid">
<div class="item">Item</div>
<div class="item">Item</div>
<div class="item">Item</div>
<div class="item">Item</div>
<div class="item">Item</div>
<div class="item">Item</div>
<div class="item">Item</div>
<div class="item">Item</div>
<div class="item">Item</div>
<div class="item">Item</div>
<div class="item">Item</div>
<div class="item">Item</div>
<div class="button">Button</div>
</div>
Upvotes: 2