Не нужно flexbox или каких-либо сложных вещей, вы можете просто использовать фон для этого:
.progress {
width:200px;
line-height:50px;
margin:5px;
text-align:center;
font-size:30px;
background:
linear-gradient(green,green) left no-repeat,
grey;
}
<div class="progress">
100%
</div>
<div class="progress" style="background-size:50% 100%">
50%
</div>
<div class="progress" style="background-size:75% 100%">
75%
</div>
Вы можете добавить больше окраски, чтобы приблизиться к желаемому изображению:
.progress {
width:200px;
line-height:50px;
margin:5px;
text-align:center;
font-size:30px;
background:
/*light overlay on the half top*/
linear-gradient(rgba(255,255,255,0.3),rgba(255,255,255,0.3)) top/100% 50%,
/*the two bars*/
linear-gradient(#539041,#539041) left/5px 100%,
linear-gradient(#539041,#539041) var(--p,100%) 0/5px 100%,
/*the progress*/
linear-gradient(#53e15a,#53e15a) left/var(--p,100%) 100%,
/*the outer coloration*/
#bbbbbb;
background-repeat:no-repeat;
}
<div class="progress">
100%
</div>
<div class="progress" style="--p:50%">
50%
</div>
<div class="progress" style="--p:75%">
75%
</div>