CSS, чтобы столбец таблицы занимал как можно больше места, а другие столбцы - как можно меньше
-
02-07-2019 - |
Вопрос
Мне нужно верстать html-файл с данными с помощью CSS.
Фактическое содержимое таблицы может отличаться, но всегда есть один основной столбец и 2 или более других столбцов.Я бы хотел, чтобы основной столбец занимал как можно больше ширины, независимо от его содержимого, в то время как другие столбцы занимали как можно меньше ширины.Я не могу указать точную ширину ни для одного из столбцов, потому что их содержимое может измениться.
Как я могу это сделать, используя простую семантически корректную html-таблицу и только css?
Например:
| Main column | Col 2 | Column 3 | <------------------ fixed width in px -------------------> <------- as wide as possible ---------> Thin as possible depending on contents: <-----> <-------->
Решение
Я далек от того, чтобы быть экспертом по CSS, но это работает для меня (в IE, FF, Safari и Chrome):
td.zero_width {
width: 1%;
}
Затем в вашем HTML:
<td class="zero_width">...</td>
Другие советы
Аналогично решению Alexk, но, возможно, немного проще в реализации в зависимости от вашей ситуации:
<table>
<tr>
<td>foo</td>
<td class="importantColumn">bar</td>
<td>woo</td>
<td>pah</td>
</tr>
</table>
.importantColumn{
width: 100%;
}
Возможно, вы также захотите подать заявку white-space:nowrap
к ячейкам, если вы хотите избежать переноса.
Я не добился успеха с width: 100%;
поскольку кажется, что без контейнера div, который имеет фиксированную ширину, это не приведет к желаемым результатам.Вместо этого я использую что-то вроде следующего, и это, кажется, дает мне наилучшие результаты.
.column-fill { min-width: 325px; }
Таким образом, он может увеличиться, если потребуется, и кажется, что браузер выделит все дополнительное пространство для любого столбца, установленного таким образом.Не уверен, работает ли это у всех, но у меня получилось в chrome (другие не пробовал)...стоит попробовать.