Compte tenu de ce qui suit, comment puis-je adapter la taille de ma dernière colonne à son contenu? (La dernière colonne doit être redimensionnée automatiquement par rapport au contenu. Supposons que je n’ai qu’un élément li qui doit être réduit par rapport à 3 éléments li etc.):
<table cellspacing="0" cellpadding="0" border="0">
<thead><!-- universal table heading -->
<tr>
<td class="tc first"><input type="checkbox" value="true" name="data-1-check-all" id="data-1-check-all"></td>
<td class="tc">Type</td>
<th>File</th>
<th>Sample</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<tr>
<td>Division 1</td>
<td>Division 2</td>
<td>Division 3</td>
<td>Division 4</td>
<td>Division 5</td>
</tr>
<tr>
<td>Division 1</td>
<td>Division 2</td>
<td>Division 3</td>
<td>Division 4</td>
<td class="last">
<ul class="actions">
<li><a class="iconStats" href="#">Statystyki</a></li>
<li><a class="iconEdit" href="#">Edytuj</a></li>
<li><a class="iconDelete" href="#">Usuń</a></li>
</ul>
</td>
</tr>
</tbody>
</table>
Css:
table { table-layout: fixed; width: 100%; }
table tr { border-bottom:1px solid #e9e9e9; }
table thead td, th {border-left: 1px solid #f2f2f2; border-right: 1px solid #d5d5d5; background: #ddd url("../images/sprites4.png") repeat-x scroll 0 100% ; font-weight: bold; text-align:left;}
table tr td, th { border:1px solid #D5D5D5; padding:15px;}
table tr:hover { background:#fcfcfc;}
table tr ul.actions {margin: 0;}
table tr ul.actions li {display: inline; margin-right: 5px;}
Ce qui suit va résoudre votre problème:
td.last {
width: 1px;
white-space: nowrap;
}
Et une solution plus flexible consiste à créer une classe .fitwidth
et à l'appliquer à toutes les colonnes pour lesquelles leur contenu est adapté sur une seule ligne:
td.fitwidth {
width: 1px;
white-space: nowrap;
}
Et puis dans votre HTML:
<tr>
<td class="fitwidth">ID</td>
<td>Description</td>
<td class="fitwidth">Status</td>
<td>Notes</td>
</tr>
Si vous voulez vous assurer que la dernière ligne ne se termine pas et que vous redimensionnez comme vous le souhaitez, jetez un oeil à
td {
white-space: nowrap;
}
Vous pouvez spécifier la largeur de toutes les cellules sauf celles de la table et ajouter un tableau-layout: fixed et une largeur à la table.
Vous pourriez définir
table tr ul.actions {margin: 0; white-space:nowrap;}
(ou définissez ceci pour le dernier TD comme suggéré par Sander à la place).
Cela oblige les inline-LIs à ne pas casser. Malheureusement, cela ne donne pas lieu à un nouveau calcul de largeur dans l’UL contenant (et ce TD parent) et ne redimensionne donc pas automatiquement le dernier TD.
Cela signifie que si un élément en ligne n'a pas de largeur donnée, la largeur d'un TD est toujours calculée automatiquement en premier (si elle n'est pas spécifiée). Alors son contenu en ligne avec cette largeur calculée est rendu et la propriété white-space
- est appliquée, ce qui étend son contenu au-delà des limites calculées.
Donc je devine ce n'est pas possible sans avoir un élément dans le dernier TD avec une largeur spécifique.