Sélecteur CSS dernière ligne de la table principale
J'ai une table à l'intérieur d'un tableau, et je veux remplir le fond de la dernière ligne du tableau 1 seulement — pas de table de 2.
<style>
#test tr:last-child
{
background:#ff0000;
}
</style>
<table border="1" width="100%" id="test">
<tr>
<td>
<table border="1" width="100%">
<tr>
<td>table 2</td>
</tr>
</table>
</td>
</tr>
<tr><td>table 1</td></tr>
<tr><td>table 1</td></tr>
<tr><td>table 1</td></tr>
</table>
Avec mon CSS, je suis la coloration des deux dernières lignes de table1 et table2.
- Ajouter une classe ou un attribut id unique pour délimiter les deux tables.
Vous devez vous connecter pour publier un commentaire.
Vos tables doivent avoir immédiate comme les enfants, juste
tbody
etthead
éléments, avec les lignes à l'intérieur*. Donc, modifier le code HTML pour être:Ensuite modifier votre sélecteur légèrement à ceci:
De les voir en action ici. Qui rend l'utilisation de la sélecteur d'enfant, dont:
Alors, vous êtes en ciblant uniquement les enfants directs d'
tbody
éléments qui sont eux-mêmes des enfants directs de votre#test
table.Solution Alternative
Ci-dessus est la plus élégante de la solution, que vous n'avez pas besoin de sur-monter tous les styles. L'alternative serait, pour coller avec votre configuration actuelle, et l'emporter sur le style de l'arrière de la table interne, comme ceci:
* Il n'est pas obligatoire mais la plupart (tous?) les navigateurs ajouter ces dans le, il est donc préférable de le rendre explicite. Comme @BoltClock états dans les commentaires:
TBODY
, le client sera en insérer une. Et si vous n'utilisez pas unTHEAD
ouTFOOT
, les sélecteurs#test>tbody>tr:last-child
et#test tr:last-child
choisira la même ligne, ce dernier ayant une faible spécificité.tr:last-child
dans ce tableau. Cela dit, vous avez raison, il n'est pas nécessaire d'ajouter explicitementtbody
des balises pour le balisage.>
initialement. Mise à jour de la réponse et de violon.tbody
? Je suppose que je me sens plus à l'aise en le rendant explicite, pour éviter cette situation exacte lequel mon sélecteur(s) ne cible pas ce que j'attendais, parce qu'ils ont été ajoutés en silence.tbody
pour tous vos rangs puis il ne fait aucune différence dans le comportement de savoir si ou de ne pas vous faire (et ce comportement est généralement fiable). C'est certainement une bonne pratique pour spécifier bien, surtout quand il s'agit de la sémantique.tbody
ne semble pas être compatible multi-navigateur (rapidement testé dans IE 8/9/10, Chrome & FF).