К сожалению, я не знаю способа сделать это на чистом CSS.
В качестве обходного пути вы можете использовать JavaScript для вычисления ширины, необходимой каждой ячейке таблицы, чтобы достичь 100% ширины.
Как это начать?Обратите внимание, что я изменил CSS, чтобы установить горизонтальное заполнение на 0 (это необходимо, в противном случае вам придется включить вычисляемое заполнение в вычисление JS);и я дал границы ячеек (это не необходимо, но оно лучше демонстрирует требуемые результаты).
let tbl = document.getElementById('tbl');
tbl.style.width = 'auto';
let extraSpace = document.body.clientWidth - tbl.offsetWidth;
let cols = tbl.rows[0].cells.length;
for (i = 0; i<cols; ++i) {
let padding = Math.round(extraSpace/(cols-i));
let cell = tbl.rows[0].cells[i];
cell.style.width = (cell.clientWidth + padding) + 'px';
extraSpace -= padding;
}
table {
width: 100%;
}
td {
padding: 15px 0;
text-align: center;
border:1px dotted gray;
}
<table id="tbl">
<tr>
<td>100</td>
<td>20A long text</td>
<td>300</td>
<td>300</td>
</tr>
<tr>
<td>400</td>
<td>500</td>
<td>600</td>
<td>300</td>
</tr>
</table>