Поскольку это будет только 5 столбцов, вы можете явно определить это для каждого элемента, используя nth-last-child()
.grid {
display:grid;
grid-template-columns:repeat(5,1fr);
grid-gap:5px;
margin:5px;
}
.grid > span {
padding:10px;
background:yellow;
}
.grid > span:nth-last-child(1) { grid-column:5; }
.grid > span:nth-last-child(2) { grid-column:4; }
.grid > span:nth-last-child(3) { grid-column:3; }
.grid > span:nth-last-child(4) { grid-column:2; }
/*.grid > span:nth-last-child(5) { grid-column:1; } this one is not needed*/
<div class="grid">
<span>a</span>
<span>b</span>
<span>c</span>
<span>d</span>
</div>
<div class="grid">
<span>a</span>
<span>b</span>
</div>
<div class="grid">
<span>a</span>
<span>b</span>
<span>c</span>
<span>d</span>
<span>e</span>
</div>
Или рассмотрите flexbox, где это будет легче:
.grid {
display:flex;
margin:5px;
justify-content:flex-end;
}
.grid > span {
padding:10px;
background:yellow;
width:calc(20% - 10px);
margin:5px;
box-sizing:border-box;
}
<div class="grid">
<span>a</span>
<span>b</span>
<span>c</span>
<span>d</span>
</div>
<div class="grid">
<span>a</span>
<span>b</span>
</div>
<div class="grid">
<span>a</span>
<span>b</span>
<span>c</span>
<span>d</span>
<span>e</span>
</div>
Еще одна идея с сеткой CSS, где синтаксис может быть более интуитивно понятным и легко масштабируемым для любого количества столбцов:
.grid {
display:grid;
grid-template-columns:repeat(var(--n,5),1fr);
grid-gap:5px;
margin:5px;
}
.grid > span {
padding:10px;
background:yellow;
}
.grid > span:nth-last-child(1) { grid-column-end:-1; }
.grid > span:nth-last-child(2) { grid-column-end:-2; }
.grid > span:nth-last-child(3) { grid-column-end:-3; }
.grid > span:nth-last-child(4) { grid-column-end:-4; }
.grid > span:nth-last-child(5) { grid-column-end:-5; }
.grid > span:nth-last-child(6) { grid-column-end:-6; }
/*.grid > span:nth-last-child(n) { grid-column-end:-n; }
and so on ...
*/
<div class="grid">
<span>a</span>
<span>b</span>
<span>c</span>
</div>
<div class="grid" style="--n:4">
<span>a</span>
<span>b</span>
<span>c</span>
</div>
<div class="grid" style="--n:3">
<span>a</span>
<span>b</span>
</div>
<div class="grid" style="--n:6">
<span>a</span>
<span>b</span>
<span>c</span>
<span>d</span>
<span>e</span>
</div>