Знакомьтесь, Фред. Он стол
<table border="1" style="width: 100%;">
<tr>
<td>This cells has more content</td>
<td>Less content here</td>
</tr>
</table>
В квартире Фреда есть странная привычка менять размер, поэтому он научился скрывать часть своего содержания, чтобы не отталкивать все остальные отряды и не забывать о гостиной миссис Уитфорд:
<table border="1" style="width: 100%; white-space: nowrap; table-layout: fixed;">
<tr>
<td style="overflow: hidden; text-overflow: ellipsis">This cells has more content</td>
<td style="overflow: hidden; text-overflow: ellipsis">Less content here</td>
</tr>
</table>
Это работает, но у Фреда есть ноющее чувство, что если бы его правая клетка (которую он по прозвищу Celldito) оставил бы немного места, его левая клетка не была бы урезана столько же времени. Вы можете сохранить его здравомыслие?
В итоге: как ячейки таблицы могут переполняться равномерно и только тогда, когда все они оставили все свои пустые места?
Ответы:
http://jsfiddle.net/7CURQ/
источник
<col>
s, предварительно добавив ширину<td>
стилям: jsfiddle.net/7CURQ/64Я считаю, что у меня есть не-JavaScript-решение! Лучше поздно чем никогда, правильно? В конце концов, это отличный вопрос, и Google во всем. Я не хотел соглашаться на исправление javascript, потому что я считаю недопустимым небольшое дрожание вещей, перемещающихся после загрузки страницы.
Особенности :
Как это устроено : Внутри ячейки таблицы поместите две копии содержимого в два разных элемента внутри относительно расположенного элемента контейнера. Элемент spacer позиционируется статически и поэтому влияет на ширину ячеек таблицы. Позволяя обернуть содержимое ячейки-разделителя, мы можем получить наиболее подходящую ширину искомых ячеек таблицы. Это также позволяет нам использовать абсолютно позиционированный элемент, чтобы ограничить ширину видимого содержимого до ширины относительно позиционированного родителя.
Протестировано и работает в: IE8, IE9, IE10, Chrome, Firefox, Safari, Opera
Результат изображения :
JSFiddle : http://jsfiddle.net/zAeA2/
Пример HTML / CSS :
источник
title
вместо того,data-spacer
чтобы навести указатель мыши на мышь :)Я столкнулся с той же проблемой несколько дней назад. Кажется, Люцифер Сэм нашел лучшее решение.
Но я заметил, что вы должны дублировать контент в элементе spacer. Думаю, это не так плохо, но я хотел бы также применить
title
всплывающее окно для вырезанного текста. А это значит, что длинный текст появится в моем коде третий раз.Здесь я предлагаю получить доступ к
title
атрибуту из:after
псевдоэлемента, чтобы сгенерировать прокладку и сохранить HTML в чистоте.Работает на IE8 +, FF, Chrome, Safari, Opera
http://jsfiddle.net/feesler/HQU5J/
источник
Если Javascript приемлем, я собрал быструю рутину, которую вы могли бы использовать в качестве отправной точки. Он динамически пытается адаптировать ширину ячейки, используя внутреннюю ширину диапазона, в ответ на события изменения размера окна.
В настоящее время предполагается, что каждая ячейка обычно получает 50% ширины строки, и она свернет правую ячейку, чтобы сохранить максимальную ширину левой ячейки, чтобы избежать переполнения. Вы можете реализовать гораздо более сложную логику балансировки ширины, в зависимости от ваших вариантов использования. Надеюсь это поможет:
Разметка для строки, которую я использовал для тестирования:
JQuery, который подключает событие resize:
источник
Есть гораздо более простое и элегантное решение.
В ячейке таблицы, к которой вы хотите применить усечение, просто добавьте контейнерный контейнер с css table-layout: fixed. Этот контейнер занимает всю ширину ячейки родительской таблицы, поэтому он даже реагирует.
Обязательно примените усечение к элементам в таблице.
Работает с IE8 +
и CSS:
вот рабочая скрипка https://jsfiddle.net/d0xhz8tb/
источник
Проблема заключается в 'table-layout: fixed', которая создает столбцы с равномерно распределенной фиксированной шириной. Но отключение этого css-свойства убьет переполнение текста, потому что таблица станет настолько большой, насколько это возможно (и, следовательно, переполнения не будет).
Извините, но в этом случае Фред не может достать свой пирог и съесть его ... если хозяин не предоставит Celldito меньше места для работы, во-первых, Фред не сможет использовать свой ..
источник
Вы можете попытаться «взвесить» определенные столбцы, например так:
Вы также можете попробовать несколько более интересных настроек, например, использовать столбцы с шириной 0% и использовать некоторую комбинацию
white-space
свойства CSS.Вы поняли идею.
источник
Да, я бы сказал, что у тридцатки это не получится, если вы не используете метод js. Вы говорите о сложном наборе условий рендеринга, которые вам придется определить. например, что происходит, когда обе ячейки становятся слишком большими для их квартир, вам нужно будет решить, кто имеет приоритет, или просто дать им процент от площади, и если они переполнены, они обе займут эту область, и только если у одной из них будет пробел, Вы вытягиваете ноги в другой камере, так или иначе нет способа сделать это с помощью CSS. Хотя есть некоторые довольно забавные вещи, которые люди делают с css, о которых я даже не думал. Я действительно сомневаюсь, что вы можете сделать это, хотя.
источник
Как и в случае с ответом на самбле, снова, если Javascript является приемлемым ответом, я специально создал для этого плагин jQuery: https://github.com/marcogrcr/jquery-tableoverflow
Чтобы использовать плагин просто введите
Полный пример: http://jsfiddle.net/Cw7TD/3/embedded/result/
Редактирование:
источник
Используйте хак CSS, кажется,
display: table-column;
может прийти на помощь:JSFiddle: http://jsfiddle.net/blai/7u59asyp/
источник
Просто добавьте следующие правила к себе
td
:Пример:
PS: если вы хотите установить пользовательскую ширину для другого
td
свойства использованияmin-width
.источник
Этот вопрос всплывает в Google, поэтому в моем случае я использовал фрагмент css по адресу https://css-tricks.com/snippets/css/truncate-string-with-ellipsis/ но его применение к тд не дало желаемый результат.
Мне пришлось добавить тег div вокруг текста в тд, и многоточие наконец заработало.
Сокращенный HTML-код;
Сокращенный CSS;
источник
Убедитесь, что "nowrap" решает проблему в определенной степени. Примечание: nowrap не поддерживается в HTML5
источник
white-space: nowrap
имеет тот же эффект, что иnowrap
атрибут (и я использую его в примере). Добавление здесь ничего не меняет, насколько я могу судить.Вы можете установить ширину правой ячейки на минимум необходимой ширины, затем применить overflow-hidden + text-overflow к внутренней части левой ячейки, но Firefox здесь глючит ...
хотя, кажется, flexbox может помочь
источник
Я недавно работал над этим. Проверьте этот тест jsFiddle , попробуйте самостоятельно изменить ширину базовой таблицы, чтобы проверить поведение).
Решение состоит в том, чтобы встроить таблицу в другую:
Фред теперь доволен расширением Celldito?
источник
Не знаю, поможет ли это кому-нибудь, но я решил похожую проблему, указав конкретные размеры ширины в процентах для каждого столбца. Очевидно, это будет работать лучше всего, если в каждом столбце есть содержимое с шириной, которая не изменяется слишком широко.
источник
У меня была та же проблема, но мне нужно было отобразить несколько строк (где происходит
text-overflow: ellipsis;
сбой). Я решаю это, используяtextarea
внутри,TD
а затем стиль, чтобы вести себя как ячейка таблицы.источник
Учитывая, что «table-layout: fixed» является обязательным требованием макета, чтобы при этом создавались равномерно расположенные нерегулируемые столбцы, но что вам нужно делать ячейки с разной шириной в процентах, возможно, установите для «colspan» ваших ячеек кратное число?
Например, используя общую ширину 100 для простых вычислений в процентах и говоря, что вам нужна одна ячейка 80%, а другая 20%, рассмотрите следующее:
Конечно, для столбцов 80% и 20% вы можете просто установить colspan ячейки 100% ширины на 5, 80% на 4 и 20% на 1.
источник
td
s?