带表格的表格:固定的; 以及如何使一列变宽
所以我有这种风格的桌子:
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
宽。
你可以给第一个单元格(因此列)的宽度,其余的默认为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>
表格布局的重要之处在于:列的宽度是由表格的第一行决定的。
所以
如果你的表结构如下(标准表结构)
<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>
请看看我们风格的不是td。
你正在创build一个非常大的表(数百行和列)? 如果是这样, table-layout: fixed;
是一个好主意,因为浏览器只需要读取第一行来计算和渲染整个table
,所以加载速度更快。
但是,如果没有,我会build议倾销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; }
你可以做的是这样的(伪代码):
<container table> <tr> <td> <"300px" table> <td> <fixed layout table>
基本上,将表分成两个表,并由另一个表包含它。