Ciao, direi che l'uso di nth-child può essere una rapida soluzione a patto che le voci dell'elenco restino statiche sia nella quantità sia nella lunghezza dei termini usati, altrimenti bisognerebbe capire come i vari elementi si devono adattare nel layout.
Per attribuire le diverse larghezze a scalare, ti consiglio di impostare una larghezza nominale al contenitore <ul>, quindi delle larghezze percentuali per ogni voce.
Qui un semplice esempio:
codice HTML:
<!DOCTYPE HTML>
<html lang="it">
<head>
<title>Esempio</title>
<style>
@import url('https://fonts.googleapis.com/css2?family=Sarabun:wght@100&display=swap');
ul {
display: flex;
flex-direction: column;
width: 200px;
list-style-type: none;
padding: 0;
margin: 0;
}
ul > li > a {
display: block;
float: right;
font: 28px 'Sarabun', sans-serif;
border: 1px solid transparent;
background: green;
background-clip: padding-box;
padding: 8px;
color: #fff;
text-decoration: none;
text-transform: uppercase;
text-align: right;
}
ul > li:nth-child(1) > a {background-color: #325125; min-width: 100%}
ul > li:nth-child(2) > a {background-color: #446437; min-width: 90%}
ul > li:nth-child(3) > a {background-color: #56764a; min-width: 80%}
ul > li:nth-child(4) > a {background-color: #69865f; min-width: 70%}
ul > li:nth-child(n+5) > a {background-color: #859c7c; min-width: 60%}
</style>
</head>
<body>
<ul>
<li><a href="#">Breakfast</a>
<li><a href="#">Brunch</a>
<li><a href="#">Lunch</a>
<li><a href="#">Aperitif</a>
<li><a href="#">Dinner</a>
</ul>
</body>
</html>
Il codice è relativamente semplice ma se hai bisogno di chiarimenti chiedi pure.