Ширина ячеек таблицы - установка ширины, перенос / усечение длинных слов

У меня есть таблица, содержащая ячейки с текстом разной длины. Важно, чтобы все ячейки таблицы были одинаковой ширины. Если это означает сокращение длинных слов или принудительный разрыв в длинных словах, тогда ничего страшного.

Я не могу понять, как заставить это работать.

Это для внутреннего клиентского приложения, поэтому он должен работать только в IE6 и IE7.

Пример страницы ниже. Клетка, содержащая onereallylongword, вызывает нарушение.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns = "http://www.w3.org/1999/xhtml">
<head>
    <style type = "text/css">
        td { width: 30px; }
    </style>
</head>
<body>
    <table border = "2">
        <tr>
            <td>word</td>
            <td>two words</td>
            <td>onereallylongword</td>
        </tr>
    </table>
</body>
</html>

По сути, дубликат http://stackoverflow.com/questions/416401/using-css-to-creat e-table-cells-of-a-s‌ специфическая ширина-без-переноса слов К сожалению, лучший ответ, который я знаю, - это упаковка содержимого <td> в <div> и применение к нему фиксированной ширины и переполнения.

annakata 15.01.2009 16:08
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
39
1
140 924
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

Ответ принят как подходящий

Stack Overflow решил аналогичную проблему с длинными строками кода, используя DIV и имея overflow-x:auto. CSS не может разбить слова за вас.

автоматическое переполнение приводит к добавлению полос прокрутки - в моем случае, похоже, мне лучше использовать overflow: hidden.

Richard Ev 15.01.2009 17:50
word-wrap: break-word не разбивает слова?
Iulian Onofrei 05.06.2014 14:57

Это будет на пробелах, но не на длинных словах, которые переполняются.

Diodeus - James MacFarlane 05.06.2014 16:57

@Diodeus как насчет «разрыв слов: сломать все»;

Mohd Abdul Mujib 31.03.2015 04:38

Попробуйте white-space: nowrap;

msilveus 10.06.2016 21:15

CSS может разбить слова за вас: stackoverflow.com/questions/1258416/word-wrap-in-an-html-tab‌ le

Tropicalrambler 13.02.2019 07:04

Пока вы фиксируете ширину самой таблицы и устанавливаете свойство table-layout, это довольно просто:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns = "http://www.w3.org/1999/xhtml">
<head>
    <style type = "text/css">
        td { width: 30px; overflow: hidden; }
        table { width : 90px; table-layout: fixed; }
    </style>
</head>
<body>

    <table border = "2">
        <tr>
            <td>word</td>
            <td>two words</td>
            <td>onereallylongword</td>

        </tr>
    </table>
</body>
</html>

Я тестировал это в IE6 и 7, и, похоже, все работает нормально.

Это работает хорошо - однако в моем сценарии количество столбцов может меняться, и мне будет сложно рассчитать общую ширину таблицы.

Richard Ev 15.01.2009 17:51

@RichardEv Насколько я проверил с помощью Chrome, ширина, которую можно указать для таблицы, может быть любой. Итак, вы можете просто установить его как 0.

sawa 21.02.2012 11:09

Вместо overflow: hidden для <td> я использую word-wrap: break-word. Лучше, когда ты не хочешь скрывать переполнение

instead 26.04.2014 15:37

Это дерьмо работает ... Особенно та table-layout: исправлено. Я пробовал все остальное, но ничего не помогло.

Saras Arya 30.09.2015 10:00

попробуйте td {background-color:white}

Это просто сработало для столбца, который я не хотел, чтобы длинный текст предыдущего столбца был растоптан.

Я не уверен, что это сработает - длинный текст предыдущего столбца обязательно приведет к увеличению ширины этого столбца. Не могли бы вы отредактировать свой ответ, включив в него фрагмент HTML-кода для иллюстрации?

Richard Ev 14.04.2009 13:27

Я не понимаю, как здесь может помочь установка белого цвета фона?

dwarfy 28.04.2011 12:35

Если вы хотите, чтобы длинный текст был правильно обернут в новые строки, тогда в вызове идентификатора таблицы используйте свойство css table-layout:fixed;, иначе просто css не может разбить длинный текст на новые строки.

Просто гениально. Работал как шарм после установки этого.

NLV 31.01.2012 16:52

Спасибо!! Решено: 80%; из моих проблем

Julian Mann 28.02.2012 23:27

Пожалуйста, @stackoverflow, покажите этот ответ вверху. Идеальное и простое решение. Просто сначала повозился с верхними, а потом понял это.

Stephan Hoyer 09.01.2017 15:31

Это слн. лучше всего, так как позволяет применить стиль ко всей таблице, а не только к содержимому ячейки.

count0 12.11.2019 23:19

Попробуй это:

text-overflow: ellipsis; 
overflow: hidden; 
white-space:nowrap;

Я понимаю, что вам нужно решение для IE6 / 7, но я просто предлагаю его всем остальным.

Если вы не можете использовать table-layout: fixed и вас не волнует IE <9, это работает для всех браузеров.

td {
    overflow-x: hidden;
    overflow-y: hidden;
    white-space: nowrap;
    max-width: 30px;
}
<style type = "text/css">
td { word-wrap: break-word;max-width:50px; }            
</style>

Другие вопросы по теме