Reputation: 479
I have a CSS grid but I am struggling to make the layout fit.
As you can see below, all is correct, however, I want 'Item 1" and "Item 6" to be the same height so it all runs fluidly.
.grid > div {background:red;border:2px solid blue;}
.grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
grid-gap: 10px;
}
.span-col-4{grid-column: span 4 / auto;}
.span-row-2{grid-row: span 2 / auto;}
.span-row-4{grid-row: span 4 / auto;}
<div class="grid">
<div class="span-row-2">Item 1</div>
<div class="span-row-4">Item 2</div>
<div>Item 3</div>
<div class="span-row-4">Item 4</div>
<div>Item 5</div>
<div class="span-row-2">Item 6</div>
<div class="span-row-2">Item 7</div>
<div class="span-col-4">Item 8</div>
</div>
Upvotes: 2
Views: 2135
Reputation: 272866
Consider more rows and define a the height of rows to make sure they stay equal:
.grid>div {
background: red;
border: 2px solid blue;
}
.grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
grid-auto-rows:1fr;
grid-gap: 10px;
}
.span-col-4 {
grid-column: span 4;
}
.span-row-2 { grid-row: span 2;}
.span-row-3 { grid-row: span 3;}
.span-row-4 { grid-row: span 4;}
.span-row-5 { grid-row: span 5;}
.span-row-6 { grid-row: span 6;}
<div class="grid">
<div class="span-row-3">Item 1</div>
<div class="span-row-6">Item 2</div>
<div class="span-row-2">Item 3</div>
<div class="span-row-6">Item 4</div>
<div class="span-row-2">Item 5</div>
<div class="span-row-3">Item 6</div>
<div class="span-row-2">Item 7</div>
<div class="span-col-4 span-row-2">Item 8</div>
</div>
Upvotes: 2
Reputation: 2167
You can apply min-height css
.span-row-2 {
grid-row: span 2 / auto;
min-height: 46px;
}
'Item 1" and "Item 6" height will be the same but make sure wherever you apply span-row-2 the height will be applied. Better use different class name.
Upvotes: 2