Comment puis-je sélectionner tous les tr
éléments sauf le premier tr
dans un tableau avec CSS?
J'ai essayé d'utiliser cette méthode, mais j'ai constaté que cela ne fonctionnait pas.
<tr>
et une classe différente pour les autres.
Comment puis-je sélectionner tous les tr
éléments sauf le premier tr
dans un tableau avec CSS?
J'ai essayé d'utiliser cette méthode, mais j'ai constaté que cela ne fonctionnait pas.
<tr>
et une classe différente pour les autres.
Réponses:
En ajoutant une classe au premier tr
ou au suivant tr
s. Il n'y a aucun moyen de sélectionner les lignes que vous souhaitez avec CSS seul.
Cependant, si vous ne vous souciez pas d'Internet Explorer 6, 7 ou 8:
tr:not(:first-child) {
color: red;
}
tr:not(:first-of-type)
une solution potentielle également, si vous recherchez la première instance d'un sélecteur spécifique plutôt que le premier enfant généralisé.
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 deux exactement de la même manière (dans le contexte des tableaux HTML de toute façon) que:
tr:not(:first-child)
elem + elem
est une excellente solution générale lorsque les éléments que vous souhaitez cibler ne sont pas les seuls enfants. Par exemple, si a <h2>
est suivi de plusieurs <p>
balises, la première <p>
n'est pas le premier enfant dans ce cas.
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, puis de remplacer avec 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 entraînerait un `` meilleur '' balisage (sémantiquement correct, utile pour des choses comme les lecteurs d'écran ) et des possibilités plus faciles à utiliser pour tous les navigateurs pour la sélection css ( table thead ... { ... }
)
Bien que la question ait déjà une réponse décente, je veux juste souligner que la :first-child
balise va 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 seconds éléments avec une marge, mais pas le premier, vous feriez:
#someDiv > input {
margin-top: 20px;
}
#someDiv > input:first-child{
margin-top: 0px;
}
c'est-à-dire, puisque les input
s sont les enfants, vous placeriez first-child
sur la partie d'entrée du sélecteur.
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 utiliser 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
Une autre option:
tr:nth-child(n + 2) {
/* properties */
}
Peut-être que quelqu'un peut en bénéficier, voici ce que j'ai utilisé
ol li:not(:first-child) {
background: black;
color: white;
}
Vous pouvez également utiliser un pseudo sélecteur de classe dans votre CSS comme ceci:
.desc:not(:first-child) {
display: none;
}
Cela n'appliquera pas la classe au premier élément avec la classe .desc.
Voici un JSFiddle avec un exemple: http://jsfiddle.net/YYTFT/ , et ceci est une bonne source pour expliquer les sélecteurs de pseudo-classe: http://css-tricks.com/pseudo-class-selectors/
first-child
ignore les classes.
Vous pouvez créer une classe et utiliser la classe lorsque vous définissez tous vos futurs que vous voulez (ou ne voulez pas) être sélectionnés par le CSS.
Cela se ferait en écrivant
<tr class="unselected">
puis dans votre css ayant les lignes (et en utilisant la commande text-align comme exemple):
unselected {
text-align:center;
}
selected {
text-align:right;
}