У меня есть таблица HTML, как это:
div {
width: 100%;
overflow-x: auto;
}
table {
white-space: nowrap;
}
td {
border: 1px solid gray;
padding: 5px 10px;
min-width: 100px;
max-width:40vw;
}<div>
<table style = "width: 100%;">
<tr>
<td class = "block">1</td>
<td class = "block">A table cell content</td>
<td class = "block">This should be a text that breaks after 200px Lorem ipsum dolor sit amet</td>
<td class = "block">A table cell content</td>
<td class = "block">A table cell content</td>
<td class = "block">A table cell content</td>
<td class = "block">A table cell content</td>
</tr>
</table>
</div>Результат:
Проблема в том, что текст должен переноситься при достижении max-width. Я знаю, что white-space: nowrap вызывает эту проблему, но без этого текст переносится до достижения max-width.






td {
border: 1px solid gray;
padding: 5px 10px;
min-width: 100px;
max-width:40vw;
white-space: pre-wrap
}
Добавить white-space: pre-wrap в td или удалить white-space: nowrap в table
Можете ли вы добавить тег span в td, чтобы получить такой результат?
span {
white-space: pre-wrap
}
Но вы установили width:100% в свой table. Я установил его в пикс. вот так width:1500px. Если вы установите 100% ширина в таблице, оставшиеся столбцы будут переносить этот текст до достижения его максимальной ширины.
Вы можете проверить приведенную выше скрипку, я установил width:100% в table и удалил последние 2 столбца. Теперь длинный текстовый столбец будет адаптироваться к 40vw, а остальные столбцы не будут предварительно обтекать текст. Таким образом, это также зависит от ширины вашей родительской таблицы.
@Koopakiller Можешь проверить мою вторую скрипку?
Это не то, чего я хочу... Я бы хотел, чтобы таблица была как можно меньше, но, если необходимо, увеличивалась до max-width в каждом столбце в зависимости от vw. Означает: я ничего не знаю о содержимом таблицы, но пользователь должен иметь возможность читать содержимое как можно проще, что означает, что мне не нравится указывать ширину таблицы, я не знаю, сколько столбцов в ней имеет
так как у вас есть white-space: nowrap;, он не сломается, но вы можете добавить класс к td, который вы хотите сломать, надеюсь, это поможет вам, спасибо.
.no-white-space{
white-space: normal;
}
div {
width: 100%;
overflow-x: auto;
}
table {
white-space: nowrap;
}
td {
border: 1px solid gray;
padding: 5px 10px;
min-width: 100px;
max-width:40vw;
}
.no-white-space{
white-space: normal;
}<div>
<table>
<tr>
<td class = "block">1</td>
<td class = "block">A table cell content</td>
<td class = "block no-white-space">This should be a text that breaks after 200px Lorem ipsum dolor sit amet</td>
<td class = "block">A table cell content</td>
<td class = "block">A table cell content</td>
<td class = "block">A table cell content</td>
<td class = "block">A table cell content</td>
</tr>
</table>
</div>Я хотел бы избежать того, что мне нужно каким-либо образом обрабатывать текст. Добавление другого класса не так просто реализовать, чем простое решение CSS.
@Koopakiller, похоже, этот ответ не обрабатывает текст. Что означает ваше второе предложение? Добавление класса — это простое решение CSS.
Я ничего не знаю о содержимом ячейки, особенно о длине текстов, поэтому я не могу добавить класс без дальнейшей обработки текстов
Я уточнил вопрос: проблема в том, что текст должен переноситься на нет до достижения
max-width