I have a ul of unknown length.
I want to arrange this ul into a grid. The grid must have 4 columns and be column-based, like follows:
1 6 11 16
2 7 12 17
3 8 13 18
4 9 14
5 10 15
This can be achieved with:
ul {
display: grid;
grid-template-columns: 1fr 1fr 1fr 1fr;
grid-template-rows: 1fr;
grid-auto-flow: column;
grid-auto-rows: 10px;
}
However, if I then add more li's into the ul, it overflows and begins creating new columns:
1 6 11 16 21
2 7 12 17 22
3 8 13 18 23
4 9 14 19
5 10 15 20
when what I want is for it to create new rows, because I can only have 4 columns:
1 7 13 19
2 8 14 20
3 9 15 21
4 10 16 22
5 11 17 23
6 12 18
How can I block the creation of new columns and force only new rows to be created?
I don't believe I can use a flexbox with flex-direction:column
and flex-wrap:wrap
, as I don't have a defined height of the final ul.
I've even tried to create a grid using grid-auto-flow:row
and then transpose it using transforms, but I think that will only work for square grids.
Question has been marked as duplicate, but the other question only wants to know know to make the grid flow in columns.