Sélectionner tous les éléments "tr" sauf le premier "tr" dans une table avec CSS

Comment puis-je sélectionner tous les éléments tr sauf le premier tr dans un tableau avec CSS?

j'ai essayé d'utiliser cette méthode, mais cela n'a pas fonctionné:

http://www.daniel-lemire.com/blog/archives/2008/08/22/how-to-select-even-or-odd-rows-in-a-table-using-css-3/

218
demandé sur Brian Tompsett - 汤莱恩 2010-10-25 14:34:13

10 réponses

par l'ajout d'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.

cependant, si vous ne vous souciez pas D'Internet Explorer 6, 7 ou 8:

tr:not(:first-child) {
    color: red;
}
395
répondu Magnar 2010-10-25 10:41:31

je suis surpris que personne n'ait mentionné l'utilisation de combinateurs frères et sœurs, qui sont supportés par IE7 et plus tard:

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 tables HTML de toute façon) que:

tr:not(:first-child)
218
répondu BoltClock 2012-09-18 08:54:18

solution idéale mais non prise en charge dans IE

tr:not(:first-child) {css}

la deuxième solution serait de styliser tous les tr et de les remplacer par css pour le premier enfant:

tr {css}
tr:first-child {override css above}
26
répondu Mark Steggles 2011-12-18 07:00:05

ressemble à la "première ligne" dont vous parlez est votre table-en-tête - donc vous devriez vraiment penser à utiliser thead et tbody dans votre balisage ( Cliquez ici ) qui aboutirait à "meilleur" balisage (sémantiquement correct, utile pour des choses comme les screenreaders) et plus facile, cross-browser-friendly possibilitys pour CSS-sélection ( table thead ... { ... } )

10
répondu oezi 2010-10-25 10:48:38

bien que la question ait déjà une réponse correcte, je tiens à souligner que l'étiquette :first-child va sur le type d'article 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 voulez affecter seulement le deuxième de deux éléments avec une marge, mais pas le premier, vous feriez:

#someDiv > input {
     margin-top: 20px;
}
#someDiv > input:first-child{
     margin-top: 0px;
}

qui est, depuis la input s sont les enfants, vous placerez first-child sur l'entrée partie de la sélection.

2
répondu CodyBugstein 2014-07-30 17:26:15

Désolé, je sais que c'est vieux, mais pourquoi ne pas le style de tous les tr éléments comme vous le souhaitez tous à l'exception de la première et de l'utilisation de la pseudo classe :first-child où vous révoquez ce que vous avez spécifié pour tous les tr éléments.

mieux décrit par cet exemple:

http://jsfiddle.net/DWTr7/1 /

tr {
    border-top: 1px solid;
}
tr:first-child {
    border-top: none;   
}

/ Patrik

1
répondu Patrik 2011-08-29 10:50:28

une autre option:

tr:nth-child(n + 2) {
    /* properties */
}
1
répondu Arman Yeghiazaryan 2017-09-10 11:25:41

Depuis tr:not(:first-child) n'est pas pris en charge par IE 6, 7, 8. Vous pouvez utiliser l'aide de jQuery. Vous pouvez le trouver ici

0
répondu Tapos 2017-05-23 12:02:38

vous pouvez également utiliser un sélecteur de pseudo-classe dans votre CSS comme ceci:

.desc:not(:first-child) {
    display: none;
}

qui n'appliquera pas la catégorie au premier élément de la catégorie .desc.

voici un JSFiddle avec un exemple: http://jsfiddle.net/YYTFT / , et c'est une bonne source pour expliquer les pseudo sélecteurs de classe: http://css-tricks.com/pseudo-class-selectors /

-1
répondu James 2012-10-17 11:01:57

vous pouvez créer une classe et utiliser cette classe lorsque vous définissez tous vos futurs que vous voulez (ou ne voulez pas) être sélectionnés par le CSS.

cela serait fait en écrivant

<tr class="unselected">

et ensuite dans votre css ayant les lignes (et en utilisant la commande text-align à titre d'exemple):

unselected {
  text-align:center;
}



selected {
  text-align:right;
}
-3
répondu user476033 2010-10-25 10:40:36