Вы можете сделать это, используя маску и один div:
.box {
height:200px;
background:linear-gradient(to right,green,yellow);
-webkit-mask: linear-gradient(to right,#fff calc(100% - 5px), transparent 0)
0 / calc((100% + 5px)/8) 100%;
mask: linear-gradient(to right,#fff calc(100% - 5px), transparent 0)
0 / calc((100% + 5px)/8) 100%;
}
body {
background:#e2e2e2;
border:5px solid red;
}
<div class="box">
</div>
Вы можете добавить CSS переменных, чтобы легко настроить различные значения:
.box {
--n:8;
--b:5px;
height:100px;
background:linear-gradient(to right,green,yellow);
-webkit-mask: linear-gradient(to right,#fff calc(100% - var(--b)), transparent 0)
0 / calc((100% + var(--b))/var(--n)) 100%;
mask: linear-gradient(to right,#fff calc(100% - var(--b)), transparent 0)
0 / calc((100% + var(--b))/var(--n)) 100%;
margin:5px 0;
}
body {
background:#e2e2e2;
border:5px solid red;
}
<div class="box"></div>
<div class="box" style="--n:10;--b:10px;"></div>
<div class="box" style="--n:5;--b:15px;"></div>
Другой синтаксис:
.box {
--n:8;
--b:5px;
height:100px;
background:linear-gradient(to right,green,yellow);
-webkit-mask: repeating-linear-gradient(to right,
#fff 0 calc((100% + var(--b))/var(--n) - var(--b)),
transparent 0 calc((100% + var(--b))/var(--n)));
mask: repeating-linear-gradient(to right,
#fff 0 calc((100% + var(--b))/var(--n) - var(--b)),
transparent 0 calc((100% + var(--b))/var(--n)));
margin:5px 0;
}
body {
background:#e2e2e2;
border:5px solid red;
}
<div class="box"></div>
<div class="box" style="--n:10;--b:10px;"></div>
<div class="box" style="--n:5;--b:15px;"></div>