У меня есть таблица, которая может иметь две, три или четыре столбца. Содержимое этих столбцов является динамическим.
То, что я пытаюсь сделать, заключается в том, что в первом столбце используется максимально возможная ширина. Остальные столбцы должны использовать только то, что необходимо для отображения текста без упаковки.
Я создал эту скрипту js с несколькими таблицами. Вы можете видеть, что возраст и страна получают ровную ширину. http://jsfiddle.net/7wt7d/
HTML
<table>
<tr>
<th>Name</th>
<th>Age</th>
</tr>
<tr>
<td>Frank</td>
<td>26</td>
</tr>
<tr>
<td>Marry</td>
<td>31</td>
</tr>
</table>
<table>
<tr>
<th>Name</th>
<th>Age</th>
<th>Country</td>
</tr>
<tr>
<td>Frank</td>
<td>26</td>
<td>United States</td>
</tr>
<tr>
<td>Marry</td>
<td>31</td>
<td>Canada</td>
</tr>
</table>
CSS
table {
width: 400px;
}
th, td {
text-align: right;
}
th:first-child, td:first-child {
text-align:left;
}
Я попытался установить ширину столбцов, но поскольку последние два столбца могут иметь текст, начиная от Канады до Соединенных Штатов, я действительно не хочу устанавливать это на 100 пикселей или что-то в этом роде, особенно когда второй,, 50px.
Есть ли способ сделать это?
Первая колонка (как можно шире) | Вторая колонка (максимально узкая) | Третий столбец, как второй.
Использовать свойство css white-space:nowrap;
чтобы слова не обертывались.
CSS
table {
width: 400px;
}
th, td {
text-align: right;
padding:0 5px;
white-space:nowrap;
}
th:first-child, td:first-child {
text-align:left;
width:100%;
}
HTML
<table>
<tr>
<th>Name</th>
<th>Age</th>
</tr>
<tr>
<td>Frank</td>
<td>26</td>
</tr>
<tr>
<td>Marry</td>
<td>31</td>
</tr>
</table>
<table>
<tr>
<th>Name</th>
<th>Age</th>
<th>Country</td>
</tr>
<tr>
<td>Frank</td>
<td>26</td>
<td>United States</td>
</tr>
<tr>
<td>Marry</td>
<td>31</td>
<td>Canada</td>
</tr>
</table>
ДЕМО ЗДЕСЬ: http://jsfiddle.net/7wt7d/2/
http://jsfiddle.net/xpHZ2/ http://jsfiddle.net/xpHZ2/show
Я бы установил с тегом col ширину столбцов таблицы. И используйте белое пространство: nowrap, чтобы обеспечить обтекание текста на всех tds, кроме первого td.
<table>
<col class="col name" />
<col class="col age" />
<col class="col country" />
.col.age {
width: 10%;
}
.col.country {
width: 20%;
}
td {
white-space: nowrap;
}
td:first-child {
white-space: normal;
}