Comment sélectionner tous les éléments tr
à l'exception du premier tr
d'un tableau avec CSS?
J'ai essayé d'utiliser cette méthode, mais j'ai constaté que cela ne fonctionnait pas:
En ajoutant une classe à la première tr
ou à la suivante tr
s. Il n'y a pas de méthode crossbrowser pour sélectionner les lignes que vous voulez avec CSS seul.
Toutefois, si vous ne vous souciez pas d'Internet Explorer 6, 7 ou 8:
tr:not(:first-child) {
color: red;
}
Je suis surpris que personne n'ait mentionné l'utilisation de combinateurs frères, qui sont pris en charge par IE7 et versions ultérieures:
tr + tr /* CSS2, adjacent sibling */
tr ~ tr /* CSS3, general sibling */
Ils fonctionnent tous les deux exactement de la même manière (dans le contexte des tableaux HTML) que:
tr:not(:first-child)
solution idéale mais non supportée dans IE
tr:not(:first-child) {css}
la deuxième solution consisterait à styler tous les tr puis à les remplacer par css pour le premier enfant:
tr {css}
tr:first-child {override css above}
sonne comme la "première ligne" dont vous parlez est votre en-tête de table - vous devriez donc vraiment penser à utiliser thead
et tbody
dans votre balisage ( cliquez ici ) ce qui résulterait en un "meilleur" balisage (correct sémantiquement, utile pour des choses comme les lecteurs d'écran) et des possibilités plus faciles, multi-navigateurs pour la sélection css (table thead ... { ... }
)
Bien que la question ait déjà une réponse décente, je tiens simplement à souligner que la balise :first-child
figure sur le type d'élément qui représente les enfants.
Par exemple, dans le code:
<div id"someDiv">
<input id="someInput1" />
<input id="someInput2" />
<input id="someInput2" />
</div
Si vous souhaitez affecter uniquement les deux derniers éléments avec une marge, mais pas le premier, procédez comme suit:
#someDiv > input {
margin-top: 20px;
}
#someDiv > input:first-child{
margin-top: 0px;
}
c'est-à-dire que, puisque les input
s sont les enfants, vous placeriez first-child
sur la partie d'entrée du sélecteur.
Une autre option:
tr:nth-child(n + 2) {
/* properties */
}
Désolé, je sais que c'est vieux, mais pourquoi ne pas styler tous les éléments tr comme vous le souhaitez sauf le premier et l'utilisation de la classe psuedo: premier-enfant où vous révoquez ce que vous avez spécifié pour tous les éléments tr.
Mieux décrit par cet exemple:
tr {
border-top: 1px solid;
}
tr:first-child {
border-top: none;
}
/ Patrik
Puisque tr:not(:first-child)
n'est pas supporté par IE 6, 7, 8. Vous pouvez utiliser l'aide de jQuery. Vous pouvez le trouver ici