Disons que j'ai un tableau avec seulement trois petites colonnes. Il semble désordonné et déséquilibré d'avoir une table étroite et haute serrant le côté gauche de mon écran ( exemple ), donc j'aimerais que le tableau couvre la largeur de la page. Cependant, lorsque je définit la largeur du tableau à 100%, toutes les colonnes sont également étirées, alors maintenant mes données sont réparties finement sur l'écran, ce qui semble également désordonné ( exemple ).
Ce que je recherche, c'est une solution où toutes les colonnes ont la même taille qu'elles auraient eu si le tableau était width: auto
, mais la dernière colonne remplit l'espace restant à l'écran. C'est ce que fait Spotify, par exemple:
La colonne "Utilisateur" couvrira la largeur restante, quoi qu'il arrive. Existe-t-il un moyen relativement simple d'y parvenir avec les tableaux HTML et CSS?
J'ai trouvé une solution simple:
table td:last-child {
width: 100%;
}
Résultat:
body {
font: 12px "Sans serif";
}
table {
width: 100%;
background-color: #222222;
color: white;
border-collapse: collapse;
}
table th {
padding: 10px;
text-align: left;
}
table td {
padding: 2px 10px;
}
table td:last-child {
width: 100%;
}
table td:nth-child(odd), table th:nth-child(odd) {
background-color: rgba(255, 255, 255, 0.05);
}
table tr:nth-child(even) {
background-color: rgba(255, 255, 255, 0.05);
}
table tr:last-child td {
padding-bottom: 10px;
}
<table>
<tr>
<th>Product</th>
<th>Cardinality</th>
<th>Price per item</th>
</tr>
<tr>
<td>Apple</td>
<td>5</td>
<td>$2</td>
</tr>
<tr>
<td>Pear</td>
<td>3</td>
<td>$3</td>
</tr>
<tr>
<td>Sausage</td>
<td>10</td>
<td>$0.5</td>
</tr>
<tr>
<td>Pineapple</td>
<td>2</td>
<td>$8</td>
</tr>
<tr>
<td>Tomato</td>
<td>5</td>
<td>$1</td>
</tr>
<tr>
<td>Lightsaber</td>
<td>2</td>
<td>$99 999</td>
</tr>
</table>
Cela semble fonctionner dans mon scénario actuel, mais cela ressemble à quelque chose qui peut provoquer des effets secondaires indésirables dans d'autres situations. Si je tombe sur un, je modifierai cette réponse.
white-space: nowrap
sur les cellules du tableau, mais cela empêchera les cellules contenant beaucoup de texte d'habiller quand elles le devraient.Si c'est ce que vous vouliez dire: image alors je peux y arriver en utilisant une structure de table html standard avec le css suivant:
table {
width:auto;
}
td {
white-space:nowrap;
}
td:last-child {
width:100%;
}
--EDIT: travaillez avec votre jsfiddle
Réglez la largeur de votre table à 100%. Définissez des largeurs sur toutes les colonnes sauf la plus à droite. La colonne la plus à droite s'agrandira pour remplir l'espace disponible.