Вы хотите, чтобы первые 4 элемента всегда заполняли первую строку, а последний элемент всегда заполнял вторую строку.
Это означает, что вам нужна сетка из 4 столбцов, причем последний элемент охватывает все 4 столбца.,
body {
display: grid;
grid-template-columns: repeat(4, 1fr);
}
#div5 {
grid-column-start: 1;
grid-column-end: -1;
}
/* Div Styles */
#div1 { background: yellow }
#div2 { background: dodgerblue }
#div3 { background: tomato }
#div4 { background: limegreen }
#div5 { background: aqua }
/* Body Style */
body { margin: 0; }
/* Grid Settings */
body {
display: grid;
grid-template-columns: repeat(4, 1fr);
grid-template-rows: repeat(auto-fit, minmax(200px, 1fr));
grid-auto-rows: minmax(200px, 1fr);
}
#div5 {
grid-column-start: 1;
grid-column-end: -1;
}
<div id="div1">Div 1</div>
<div id="div2">Div 2</div>
<div id="div3">Div 3</div>
<div id="div4">Div 4</div>
<div id="div5">Div 5</div>
Проблема с исходным кодом:
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
состоит в том, что он использует auto-fit
, который предназначен для адаптивных сеток макета, гдеколичество столбцов не фиксировано, а сетка создает новые столбцы на основе содержимого сетки и метода размещения.
Это, очевидно, не то, что вам нужно в вашем случае.