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é:
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;
}
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)
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}
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 ... { ... }
)
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.
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:
tr {
border-top: 1px solid;
}
tr:first-child {
border-top: none;
}
/ Patrik
une autre option:
tr:nth-child(n + 2) {
/* properties */
}
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 /
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;
}