В вашем примере только 4 изображения, поэтому я предполагаю, что вы хотите, чтобы этот шаблон повторился.
В этом случае вам нужно изменить строки максимум от 8 до auto
с помощью grid-auto-rows: minmax(5vw, auto);
Затем, используя nth-child(Xn+Y)
, вы можете изменить размеры соответственно.
* {
margin: 0;
}
.grid {
display: grid;
grid-template-columns: repeat(8, 1fr);
grid-auto-rows: minmax(5vw, auto);
grid-gap: 1vw;
}
figure {
background: lightblue;
display: flex;
justify-content: center;
align-items: center;
font-size: 1vw;
}
figure:nth-child(4n+1),
figure:nth-child(4n+2) {
grid-column: span 2;
grid-row: span 2
}
figure:nth-child(4n+3) {
grid-column: span 4;
grid-row: span 4;
}
figure:nth-child(4n+4) {
grid-column: span 4;
grid-row: span 2;
}
<div class="grid">
<figure>1</figure>
<figure>2</figure>
<figure>3</figure>
<figure>4</figure>
<figure>5</figure>
<figure>6</figure>
<figure>7</figure>
<figure>8</figure>
<figure>9</figure>
<figure>10</figure>
<figure>11</figure>
<figure>12</figure>
<figure>13</figure>
<figure>14</figure>
<figure>15</figure>
</div>