Я немного поиграл с этим, потому что мне было трудно понять это.
Вы должны установить ширину ячейки (либо thили tdработал, я установил оба) и установить table-layoutв fixed. По некоторым причинам ширина ячейки, кажется, остается неизменной, только если ширина таблицы тоже установлена (я думаю, что это глупо, но все же).
Также полезно установить overflowсвойство так, чтобы hiddenлюбой дополнительный текст не выходил из таблицы.
Вы также должны оставить все границы и размеры для CSS.
Итак, вот что у меня есть:
table {
border: 1px solid black;
table-layout: fixed;
width: 200px;
}
th,
td {
border: 1px solid black;
width: 100px;
overflow: hidden;
}
<table>
<tr>
<th>header 1</th>
<th>header 234567895678657</th>
</tr>
<tr>
<td>data asdfasdfasdfasdfasdf</td>
<td>data 2</td>
</tr>
</table>
Вот это в JSFiddle
У этого парня была похожая проблема: ширина ячейки таблицы - фиксирование ширины, перенос / усечение длинных слов