Also habe ich einen Tisch mit diesem Stil:
table-layout: fixed;
Dadurch haben alle Spalten die gleiche Breite. Ich möchte, dass eine Spalte (die erste) breiter ist und der Rest der Spalten die verbleibende Breite der Tabelle mit gleichen Breiten belegt.
Wie erreicht man das?
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/
Beachten Sie die erste Spalte, ich möchte, dass sie 300px
breit ist.
col
tut die Technik sowieso: ** siehe aktualisierte Geige - und mit der Colspan-Methode könnten Sie dann bei Bedarf auch andere Spaltenbreitenthead
die Breite auf seine eingestellt werdenth
<table><caption>...</caption><tbody>....</tbody></table>
td:first-of-type { width: 150px; }
. Keine zwei Selektoren erforderlich. Beachten Sie auch, dass die erste Zeile der Tabelle mittable-layout: fixed
die Breite bestimmt.Das Wichtigste beim Tabellenlayout: Fest ist, dass die Spaltenbreiten durch die erste Zeile der Tabelle bestimmt werden.
Damit
wenn Ihre Tabellenstruktur wie folgt ist (Standardtabellenstruktur)
<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>
Wenn Sie der zweiten Spalte eine Breite geben möchten, dann
<style> table{ table-layout:fixed; width: 100%; } table tr th:nth-child(2){ width: 60%; } </style>
Bitte schauen Sie, dass wir das th nicht das td stylen.
quelle
Erstellen Sie eine sehr große Tabelle (Hunderte von Zeilen und Spalten)? Wenn ja,
table-layout: fixed;
ist dies eine gute Idee, da der Browser nur die erste Zeile lesen muss, um das gesamte zu berechnen und zu renderntable
, sodass es schneller geladen wird.Wenn nicht, würde ich vorschlagen
table-layout: fixed;
, Ihr CSS wie folgt zu entleeren und zu ändern:http://jsfiddle.net/6p9K3/1/
quelle
td
folgt in die vierth
s einfügen:<div style="width:80px;">Richard Knop</div>
Setzen Sie diewidth
auf die Summe aller einzelnentd
s. Siehe hier jsfiddle.net/6p9K3/2Was Sie tun könnten, ist so etwas (Pseudocode):
<container table> <tr> <td> <"300px" table> <td> <fixed layout table>
Teilen Sie die Tabelle grundsätzlich in zwei Tabellen auf und lassen Sie sie in einer anderen Tabelle enthalten.
quelle