Ответ 1
вам нужно добавить свойство table-layout:
table-layout: fixed;
также включают width = 100% в HTML-теге таблицы, а не только тег стиля.
Этот вопрос задавался несколько раз, но ни один из ответов не помог мне:
См. здесь в действии: http://jsfiddle.net/BlaM/bsQNj/2/
У меня есть "динамический" (процентный) макет с двумя столбцами.
.grid {
width: 100%;
box-sizing: border-box;
}
.grid > * {
box-sizing: border-box;
margin: 0;
}
.grid .col50 {
padding: 0 1.5%;
float: left;
width: 50%;
}
В каждом из этих столбцов у меня есть таблица, которая должна использовать полную ширину столбца.
.data-table {
width: 100%;
}
.data-table td {
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
}
Моя проблема заключается в том, что некоторые из столбцов в этой таблице имеют контент, который нужно усечь, чтобы соответствовать заданной ширине таблицы. Однако этого не происходит. Я получаю две таблицы, которые накладываются друг на друга.
Требования:
Что я пробовал:
Вопросы, относящиеся:
вам нужно добавить свойство table-layout:
table-layout: fixed;
также включают width = 100% в HTML-теге таблицы, а не только тег стиля.
Возможно, вас будет интересовать найденный max-width: 0;
хак.
Он имеет некоторые ограничения, мы должны использовать таблицы CSS вместо HTML, но он работает:
.leftBlock
{
width: 100%;
max-width: 0;
word-wrap: break-word;
overflow: hidden;
}
.rightBlock
{
width: 200px;
max-width: 200px;
min-width: 200px;
}
Измерения на таблицах работают по-разному. В общем случае ширина ячейки таблицы обрабатывается как минимальная ширина.
Одно решение, если вы не возражаете добавить дополнительную разметку, заключается в размещении div
внутри каждой ячейки таблицы, в которую вы помещаете контент. Затем дайте этому div ширину или максимальную ширину. Так
<td>http://www.xxxxxx.xxxxxxx.com/xxx_xxxx/XXXXXXXX/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/XXXXXXXX_xXxxxx</td>
становится
<td><div>http://www.xxxxxx.xxxxxxx.com/xxx_xxxx/XXXXXXXX/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/XXXXXXXX_xXxxxx</div></td>
и т.д.
См. обновленную скрипту: http://jsfiddle.net/bsQNj/4/
Изменить: я вижу, что скрипка нуждается в некоторой работе - я забыл поставить некоторые divs там, где они были необходимы. Но я надеюсь, что вы сможете работать с этой идеей.
.div {
width:300px;
border:1px solid;
}
.breaked {
word-break: break-all;
}
table{
border:1px solid red;
}
td {
border:1px solid green;
}
<div class="div">
<table>
<tr>
<td>aaaaaaa_________________________________________-sdasd-ad-f-asfas-df-a a-sd-fa-d-ad-fa-ds-asd-a-ads-fa-df-ads-fa-d-fad-f-ad-fad-ad-sa-fda-df-</td>
<td>13</td>
</tr>
<tr>
<td>ddddddddddddd</td>
<td>aa</td>
</tr>
</table>
<br /><hr/><br />
<table class="breaked">
<tr>
<td>aaaaaaa_________________________________________-sdasd-ad-f-asfas-df-a a-sd-fa-d-ad-fa-ds-asd-a-ads-fa-df-ads-fa-d-fad-f-ad-fad-ad-sa-fda-df-</td>
<td>13</td>
</tr>
<tr>
<td>ddddddddddddd</td>
<td>aa</td>
</tr>
</table>
</div>
В вашем CSS:
table {
table-layout: auto;
width: 100%;
}
Это должно охватывать все таблицы