Первое, что нужно сделать, это избавиться от table-layout: fixed
, потому что это противоположно тому, что вы хотите.В остальном, если вы хотите, чтобы таблицы были гибкими, не пытайтесь навязывать им ширину!
Есть небольшая хитрость, чтобы сделать некоторые ячейки таблицы такими же широкими, как и их содержимое, оставляя оставшиеся ячейки остальными.оставшегося пространства: сделайте их шириной 1px
и убедитесь, что они не могут переноситься, установив white-space: nowrap
.Тогда все остальное придет естественно.
table {
border: 1px outset;
width: 100%;
}
th, td {
border: 1px inset;
}
table td:nth-child(2),
table td:nth-child(3) {
white-space:nowrap;
width: 1px;
}
<table>
<tr>
<td>product-name</td>
<td>ic</td>
<td>smt</td>
</tr>
<tr>
<td>product-info</td>
<td>ic</td>
<td>smt</td>
</tr>
</table>
<br>
<table>
<tr>
<td>product-name</td>
<td>icon</td>
<td>big-text</td>
</tr>
<tr>
<td>product-info, bla bla bla...</td>
<td>ic</td>
<td>smt</td>
</tr>
</table>
Надеюсь, это то, что вы имели в виду!