How To Get The Effect Of Grid Layout's Grid-template-columns With A Variable Number Of Columns?
I have a div containing a variable number of children. This code is generated and I can't modify it. So with only CSS I need to display divs in a table with two rows: The first ro
Solution 1:
Flexbox can do what I think you are after
.parent {
display: flex;
flex-wrap: wrap;
margin-top: 1em;
}
.child {
flex: 1;
padding: .25em0;
color:white;
font-size:1.25em;
}
.child:nth-child(1) {
flex: 10100%;
}
Test with 3 children
<divclass="parent"style="background-color:yellow;"><divclass="child"style="background-color:red;">1</div><divclass="child"style="background-color:blue;">2</div><divclass="child"style="background-color:green;">3</div></div>
Test with 4 children
<divclass="parent"style="background-color:yellow;"><divclass="child"style="background-color:red;">1</div><divclass="child"style="background-color:blue;">2</div><divclass="child"style="background-color:green;">3</div><divclass="child"style="background-color:orange;">4</div></div>
Test with 5 children
<divclass="parent"style="background-color:yellow;"><divclass="child"style="background-color:red;">1</div><divclass="child"style="background-color:blue;">2</div><divclass="child"style="background-color:green;">3</div><divclass="child"style="background-color:orange;">4</div><divclass="child"style="background-color:purple;">5</div></div>
Solution 2:
EDIT:
I thought this would work:
.parent {
display: grid;
grid-template-columns: 1fr;
grid-template-rows: 1fr 1fr;
grid-auto-columns: 1fr;
}
.child:first-child {
grid-row: 1;
grid-column: 1 / -1;
}
.child:not(:first-child) {
grid-row: 2;
}
However, it seems that grid-column: 1 / -1
does not work for auto-columns. That is very unfortunate. Therefore, the best route here would be to use flexbox, as already pointed out.
Previous answer
You should be able to solve that like this:
.parent {
display: grid;
grid-template-columns: 1fr;
grid-template-rows: 1fr 1fr;
grid-auto-columns: 1fr;
grid-auto-flow: column;
}
.child:nth-child(1) {
grid-column: 1/-1;
}
The key there is grid-auto-flow
which will establish that any unforeseen elements will be added as extra columns. With grid-auto-columns
you can specify the default size of the automatically added columns.
Post a Comment for "How To Get The Effect Of Grid Layout's Grid-template-columns With A Variable Number Of Columns?"