Ответ 1
Вероятно, вы хотите table-layout:fixed
и установить ширину в первых ячейках строки.
Подробнее см. http://www.w3.org/TR/CSS2/tables.html#fixed-table-layout.
Иногда, когда часть данных в одной из моих ячеек таблицы слишком длинная, она растягивает ячейку и деформирует структуру всей таблицы. как я могу предотвратить это?
Вероятно, вы хотите table-layout:fixed
и установить ширину в первых ячейках строки.
Подробнее см. http://www.w3.org/TR/CSS2/tables.html#fixed-table-layout.
У меня была одна и та же проблема, и я решил ее решить следующим образом:
table { width: 1px; /* This ugly hack allows the table to be only as wide as necessary, breaking text on spaces to allow cells to be less wide. */ }
По-видимому, установка ширины таблицы на что-то очень маленькое заставляет ее сломать текст и сделать меньше горизонтального пространства. Слова не будут сломаны, поэтому таблица будет по крайней мере достаточно большой для самого большого слова каждого столбца.
Проверено и проверено на:
Linux (Ubuntu 10.04)
Окна:
Если кто-то (я не могу в моей нынешней ситуации) мог протестировать это в последних версиях IE, Firefox, Chrome, Safari и Opera и оставить комментарий или отредактировать этот ответ, это было бы потрясающе!
Задайте ширину и высоту тега td с помощью CSS. Затем вам нужно иметь дело с переполнением.
td {
width: 40px;
height: 20px;
}
Предполагая, что у вас нет каких-либо неразрывных пробелов или сверхдолгого текста без пробела в ячейке, мне обычно повезло, явно устанавливая ширину указанной ячейки через CSS (кажется, работает лучше, чем делая что-то вроде "width = '100". Если данные в ячейке являются действительно длинной строкой, вы не можете много сделать, кроме как обрезать ее программно, или обернуть данные в div с явной шириной и что-то вроде overflow: hidden/auto (авто, если вы хотите горизонтальную полосу прокрутки или что-то в этом роде).
Используйте overflow: hidden
, чтобы скрыть переполнение как таковое:
td, th {
overflow: hidden;
}
Для этого вам нужно присваивать тегам <td>
или <th>
ширину.
Если вы должны абсолютно иметь таблицу, поддерживающую ее макет даже перед лицом неразрывных пробелов, вам нужно будет использовать:
overflow: hidden;
Однако я бы рекомендовал против этого. IMO, более важно, чтобы данные были читаемыми, чем идеальный макет.