Możliwe, że to zadziała, ale w pewnym momencie w przyszłości (jeśli nie od razu) może się to okazać trochę uciążliwe.
<style>
tbody td span {display: inline-block;
width: 10em; /* this is the nuisance part, as you'll have to define a particular width, and I assume -without testing- that any percent widths would be relative to the containing `<td>`, not the `<tr>` or `<table>` */
overflow: hidden;
white-space: nowrap; }
</style>
...
<table>
<thead>...</thead>
<tfoot>...</tfoot>
<tbody>
<tr>
<td><span title="some text">some text</span></td> <td><span title="some more text">some more text</span></td> <td><span title="yet more text">yet more text</span></td>
</tr>
</tbody>
</table>
Uzasadnieniem dla tego span
jest to, że, jak wskazali inni, a <td>
będzie zazwyczaj rozszerzać się, aby pomieścić zawartość, podczas gdy a <span>
można podać - i oczekuje się, że utrzyma - ustaloną szerokość; overflow: hidden
ma, ale może nie, ukryć to, co powoduje, że inaczej <td>
się rozwijać.
Zalecałbym użycie title
właściwości zakresu, aby pokazać tekst, który jest obecny (lub obcięty) w komórce wizualnej, tak aby tekst był nadal dostępny (a jeśli nie chcesz / nie potrzebujesz, aby ludzie go widzieli, to po co go mieć w pierwszej kolejności, jak sądzę ...).
Ponadto, jeśli zdefiniujesz szerokość dla td {...}
td, rozszerzy się (lub potencjalnie skurczy, ale wątpię), aby wypełnić jego domyślną szerokość (jak widzę, wydaje się, że jest totable-width/number-of-cells
), określona szerokość tabeli nie wydaje się tworzyć ten sam problem.
Wadą jest dodatkowy znacznik używany do prezentacji.