Nehmen wir 4 Tabellenspalten - ID
, Text
, Date
, Action
. In meinem Fall haben Tabelle immer konstante Breite - in Beispiel 960px.
Wie kann ich solche Tabellen erstellen als:
*-*------------------------------------*----------*----*
|1| Some text... |May 2011 |Edit|
*-*------------------------------------*----------*----*
|2| Another text... |April 2011|Edit|
*-*------------------------------------*----------*----*
Wie wir sehen, passen ID
, Date
und Action
ihre Breite an den Inhalt an, Text
ist so lang wie möglich ...
Ist das möglich, ohne eine bestimmte Spaltenbreite einzustellen? Wenn ID
= 123 oder Date
= November 2011, sollten die Spalten automatisch breiter sein ...
Mit einer 100%
-Breite für die Breite td und einer festen Breite für die Tabelle zusammen mit white-space:nowrap
können Sie Folgendes tun:
<table>
<tr>
<td>1</td>
<td width="100%">Some text... </td>
<td>May 2011</td>
<td>Edit</td>
</tr>
<tr>
<td>2</td>
<td width="100%">Another text... </td>
<td>April 2011</td>
<td>Edit</td>
</tr>
</table>
table
{
...
width:960px;
}
td
{
...
white-space:nowrap;
}
im Grunde ist es einfach so: http://jsfiddle.net/49W5A/ - Sie müssen die Zellbreite auf etwas klein einstellen (wie 1px
), um sie so klein wie möglich zu halten.
aber wie Sie sehen werden, gibt es ein Problem mit den Datumsfeldern beim Zeilenumbruch. Um dies zu verhindern, fügen Sie einfach white-space: nowrap;
für Ihr Textfeld hinzu: http://jsfiddle.net/ZXu7U/
arbeitsbeispiel:
<style type="text/css">
.table{
width:500px;
border: 1px solid #ccc;
}
.table td{
border: 1px solid #ccc;
}
.id, .date, .action{
width:1px;
}
.date{
white-space: nowrap;
}
</style>
<table class="table">
<tr>
<td class="id">1</td>
<td class="text">Some Text...</td>
<td class="date">May 2011</td>
<td class="action">Edit</td>
</tr>
<tr>
<td class="id">2</td>
<td class="text">Another Text...</td>
<td class="date">April 2011</td>
<td class="action">Edit</td>
</tr>
</table>
Mein bester Rat an Sie ist, die Breiten der Tabelle nicht zu berühren. Die Tabelle wird automatisch so angeordnet, dass alle Zellen am besten funktionieren.
Wenn Sie jedoch Push-Through durchführen möchten, würde ich width: 1px;
für die Zellen verwenden, die angepasst werden müssen (eine Spalte genügt). Verwenden Sie auch white-space: nowrap
für alle Zellen. Dadurch wird sichergestellt, dass die Linien nicht brechen.
Versuche dies:
.id, .date, .action sind die Tabellenzellen (td).
CSS:
.id, .date, .action {
width: 1em;
}
Es hat für mich funktioniert.
Mit width: 1em wird der Text nicht geschnitten, sondern die Breite auf ein Minimum reduziert.
Die beste Methode, die ich für das Einstellen von Spaltenbreiten von Tabellen gefunden habe, ist die Verwendung von a tischkopf (die leer sein kann) und wendet relative Breiten für jede Kopfzelle an. Die Breiten aller Zellen im Tabellenkörper entsprechen der Breite ihres Spaltenkopfes. Beispiel:
HTML
<table>
<thead>
<tr>
<th width="5%"></th>
<th width="70%"></th>
<th width="15%"></th>
<th width="10%"></th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>Some text...</td>
<td>May 2018</td>
<td>Edit</td>
</tr>
<tr>
<td>2</td>
<td>Another text...</td>
<td>April 2018</td>
<td>Edit</td>
</tr>
</tbody>
</table>
CSS
table {
width: 600px;
border-collapse: collapse;
}
td {
border: 1px solid #999999;
}
Alternativ können Sie colgroup
wie vorgeschlagen verwenden hier .