Таблица с таблицей-макет: исправлено; и как сделать один столбец шире
так что у меня есть таблица с этим стилем:
table-layout: fixed;
что делает все столбцы одинаковой ширины. Я хотел бы, чтобы один столбец (первый) был шире, а затем остальные столбцы занимали оставшуюся ширину таблицы с равной шириной.
как этого добиться?
table {
border-collapse: collapse;
width: 100%;
border: 1px solid black;
background: #ddd;
table-layout: fixed;
}
table th, table td {
border: 1px solid #000;
}
table td.wideRow, table th.wideRow {
width: 300px;
}
<table class="CalendarReservationsBodyTable">
<thead>
<tr>
<th colspan="97">Rezervovane auta</th>
</tr>
<tr>
<th class="corner wideRow">Auto</th>
<th class="odd" colspan="4">0</th>
<th class="" colspan="4">1</th>
<th class="odd" colspan="4">2</th>
<th class="" colspan="4">3</th>
<th class="odd" colspan="4">4</th>
<th class="" colspan="4">5</th>
<th class="odd" colspan="4">6</th>
<th class="" colspan="4">7</th>
<th class="odd" colspan="4">8</th>
<th class="" colspan="4">9</th>
<th class="odd" colspan="4">10</th>
<th class="" colspan="4">11</th>
<th class="odd" colspan="4">12</th>
<th class="" colspan="4">13</th>
<th class="odd" colspan="4">14</th>
<th class="" colspan="4">15</th>
<th class="odd" colspan="4">16</th>
<th class="" colspan="4">17</th>
<th class="odd" colspan="4">18</th>
<th class="" colspan="4">19</th>
<th class="odd" colspan="4">20</th>
<th class="" colspan="4">21</th>
<th class="odd" colspan="4">22</th>
<th class="" colspan="4">23</th>
</tr>
</thead>
<tbody>
<tr>
<td class="alignRight wideRow">KE-260 FC - Octavia combi</td>
<td class=" borderLeft"></td>
<td class="odd"></td>
<td class=""></td>
<td class="odd"></td>
<td class=" borderLeft"></td>
<td class="odd"></td>
<td class=""></td>
<td class="odd"></td>
<td class=" borderLeft"></td>
<td class="odd"></td>
<td class=""></td>
<td class="odd"></td>
<td class=" borderLeft"></td>
<td class="odd"></td>
<td class=""></td>
<td class="odd"></td>
<td class=" borderLeft"></td>
<td class="odd"></td>
<td class=""></td>
<td class="odd"></td>
<td class=" borderLeft"></td>
<td class="odd"></td>
<td class=""></td>
<td class="odd"></td>
<td class=" borderLeft"></td>
<td class="odd"></td>
<td class=""></td>
<td class="odd"></td>
<td class=" borderLeft"></td>
<td class="odd"></td>
<td class=""></td>
<td class="odd"></td>
<td colspan="16" class="highlighted borderLeft" title="Richard Knop">
Richard Knop
</td>
<td class=" borderLeft"></td>
<td class="odd"></td>
<td class=""></td>
<td class="odd"></td>
<td class=" borderLeft"></td>
<td class="odd"></td>
<td class=""></td>
<td class="odd"></td>
<td class=" borderLeft"></td>
<td colspan="14" class="highlighted" title="Richard Knop">
Richard Knop
</td>
<td class="odd"></td>
<td class=" borderLeft"></td>
<td class="odd"></td>
<td class=""></td>
<td class="odd"></td>
<td class=" borderLeft"></td>
<td class="odd"></td>
<td class=""></td>
<td class="odd"></td>
<td class=" borderLeft"></td>
<td class="odd"></td>
<td class=""></td>
<td class="odd"></td>
<td class=" borderLeft"></td>
<td class="odd"></td>
<td class=""></td>
<td class="odd"></td>
<td class=" borderLeft"></td>
<td class="odd"></td>
<td class=""></td>
<td class="odd"></td>
<td class=" borderLeft"></td>
<td class="odd"></td>
<td class=""></td>
<td class="odd"></td>
</tr>
</tbody>
</table>
jsfiddle: http://jsfiddle.net/6p9K3/
обратите внимание на первую колонку, я хочу, чтобы это было 300px
широкий.
4 ответа:
вы можете просто дать первой ячейке (следовательно, столбцу) ширину и иметь остальные значения по умолчанию
auto
table { table-layout: fixed; border-collapse: collapse; width: 100%; } td { border: 1px solid #000; width: 150px; } td+td { width: auto; }
<table> <tr> <td>150px</td> <td>equal</td> <td>equal</td> </tr> </table>
или "правильно", чтобы получить ширину столбцов можно использовать
col
элементtable { table-layout: fixed; border-collapse: collapse; width: 100%; } td { border: 1px solid #000; } .wide { width: 150px; }
<table> <col span="1" class="wide"> <tr> <td>150px</td> <td>equal</td> <td>equal</td> </tr> </table>
важная вещь table-layout: исправлено то, что ширина столбцов определяется первой строкой таблицы.
Так
Если ваша структура таблицы следующая (стандартная структура таблицы)
<table> <thead> <tr> <th> First column </th> <th> Second column </th> <th> Third column </th> </tr> </thead> <tbody> <tr> <td> First column </td> <td> Second column </td> <td> Third column </td> </tr> </tbody>
Если вы хотите дать ширину второго столбца, то
<style> table{ table-layout:fixed; width: 100%; } table tr th:nth-child(2){ width: 60%; } </style>
пожалуйста, посмотрите, что мы стиль th не td.
вы создаете очень большую таблицу (сотни строк и столбцов)? Если так, то
table-layout: fixed;
это хорошая идея, так как браузеру нужно только прочитать первую строку, чтобы вычислить и отобразить весьtable
, поэтому он загружается быстрее.но если нет, я бы посоветовал демпинг
table-layout: fixed;
и изменение css следующим образом:table th, table td{ border: 1px solid #000; width:20px; //or something similar } table td.wideRow, table th.wideRow{ width: 300px; }