It's possible that this might work, but it might prove to be a bit of a nuisance at some point in the future (if not immediately).
<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>
The rationale for the span
is that, as pointed out by others, a <td>
will typically expand to accommodate the content, whereas a <span>
can be given -and expected to keep- a set width; the overflow: hidden
is intended to, but might not, hide what would otherwise cause the <td>
to expand.
I'd recommend using the title
property of the span to show the text that's present (or clipped) in the visual cell, so that the text's still available (and if you don't want/need people to see it, then why have it in the first place, I guess...).
Also, if you define a width for the td {...}
the td will expand (or potentially contract, but I doubt it) to fill its implied width (as I see it this seems to be table-width/number-of-cells
), a specified table-width doesn't seem to create the same issue.
The downside is additional markup used for presentation.