Est-il possible d'utiliser des pseudo-classes CSS sur des éléments de liste?
Je m'attendrais à ce que les éléments suivants produisent une liste de couleurs alternées, mais je reçois plutôt une liste d'éléments bleus:
<html>
<head>
<style>
li { color: blue }
li:odd { color:green }
li:even { color:red }
</style>
</head>
<body>
<ul>
<li>ho</li>
<li>ho</li>
<li>ho</li>
<li>ho</li>
<li>ho</li>
</ul>
</body>
</html>
Démo: http://jsfiddle.net/thirtydot/K3TuN/1323/
li {
color: black;
}
li:nth-child(odd) {
color: #777;
}
li:nth-child(even) {
color: blue;
}
<ul>
<li>ho</li>
<li>ho</li>
<li>ho</li>
<li>ho</li>
<li>ho</li>
</ul>
Documentation:
Le problème avec votre CSS réside dans la syntaxe de vos pseudo-classes.
Les pseudo-classes paires et impaires devraient être:
li:nth-child(even) {
color:green;
}
et
li:nth-child(odd) {
color:red;
}
Utilisez ceci:
li { color:blue; }
li:nth-child(odd) { color:green; }
li:nth-child(even) { color:red; }
Voir ici pour des informations sur le support du navigateur: http://kimblim.dk/css-tests/selectors/
li:nth-child(1n) { color:green; }
li:nth-child(2n) { color:red; }
<ul>
<li>list element 1</li>
<li>list element 2</li>
<li>list element 3</li>
<li>list element 4</li>
</ul>
Voir support du navigateur ici: CSS3: sélecteur nth-child ()
le css impair et pair n'est pas supporté par IE .
Meilleure solution:
li:nth-child(2n+1) { color:green; } // for odd
li:nth-child(2n+2) { color:red; } // for even
li:nth-child(1n) { color:green; }
li:nth-child(2n) { color:red; }
<ul>
<li>list element 1</li>
<li>list element 2</li>
<li>list element 3</li>
<li>list element 4</li>
</ul>
mais cela ne fonctionne pas dans IE . recommande d'utiliser : nième enfant (2n + 1) : nième enfant (2n + 2)
li {
color: black;
}
li:nth-child(odd) {
color: #777;
}
li:nth-child(even) {
color: blue;
}
<ul>
<li>ho</li>
<li>ho</li>
<li>ho</li>
<li>ho</li>
<li>ho</li>
</ul>