Рассмотрите фон вместо box-shadow, затем просто отрегулируйте размер, используя background-size
td {
background:
repeating-linear-gradient(45deg,green 0 10px,darkgreen 10px 20px) 0 0/100% 100% no-repeat;
}
<table>
<tr>
<td style="background-size:80% 100%;">
<span style="padding-left:10px;font-size:25px">Style one</span>
</td>
<td style="background-size:20% 100%;">
<span style="padding-left:10px;font-size:25px">Style two</span>
</td>
</tr>
<table>
И с анимацией:
td {
position:relative;
z-index:0;
}
td:before {
content:"";
position:absolute;
top:0;
left:0;
bottom:0;
width:var(--p);
background:
repeating-linear-gradient(45deg,green 0 10px,darkgreen 10px 20px) 0 0/200% 100% no-repeat;
z-index:-1;
animation:change 2s linear infinite;
}
@keyframes change {
to {
background-position:right;
}
}
<table>
<tr>
<td style="--p:80%;">
<span style="padding-left:10px;font-size:25px">Style one</span>
</td>
<td style="--p:20%;">
<span style="padding-left:10px;font-size:25px">Style two</span>
</td>
</tr>
<table>
Другой вид анимации без прозрачности и без псевдоэлемента:
td {
position:relative;
z-index:0;
background:
linear-gradient(#fff,#fff) right/calc(100% - var(--p)) 100% no-repeat,
repeating-linear-gradient(45deg,green 0 10px,darkgreen 10px 20px) 0 0/200% 100% no-repeat;
animation:change 2s linear infinite;
}
@keyframes change {
to {
background-position:right;
}
}
<table>
<tr>
<td style="--p:80%;">
<span style="padding-left:10px;font-size:25px">Style one</span>
</td>
<td style="--p:20%;">
<span style="padding-left:10px;font-size:25px">Style two</span>
</td>
</tr>
<table>