Maison > interface Web > tutoriel CSS > le corps du texte

Comment alterner les couleurs des éléments avec :nth-child lorsque vous ignorez des éléments qui ne correspondent pas ?

Mary-Kate Olsen
Libérer: 2024-11-07 03:48:03
original
819 Les gens l'ont consulté

How to Alternate Element Colors with :nth-child When Skipping Non-Matching Elements?

:nth-child(pair/impair) Sélecteur avec classe

En CSS, le sélecteur :nth-child(n) sélectionne des éléments qui sont le nième enfant de leur parent. Lorsque n est impair, le sélecteur nième enfant (impair) sélectionne les éléments impairs, et lorsque n est pair, le sélecteur nième enfant (pair) sélectionne les éléments pairs.

Considérez le balisage HTML suivant , où nous voulons appliquer les sélecteurs :nth-child pour lister les éléments avec la classe "parent":

<ul>
    <li class="parent">green</li>
    <li class="parent">red</li>
    <li>ho ho ho</li>
    <li class="parent">green</li>
    <li class="parent">red</li>
</ul>
Copier après la connexion

Application du CSS suivant au HTML ci-dessus :

.parent:nth-child(odd) {
    background-color: green;
}

.parent:nth-child(even) {
    background-color: red;
}
Copier après la connexion

De façon inattendue, la couleur des éléments est réinitialisée après le premier élément non-.parent. En effet, le sélecteur :nth-child s'applique à tous les éléments de la liste, pas seulement à ceux avec la classe "parent".

Pour obtenir le comportement souhaité, nous devons utiliser le combinateur général des frères et sœurs (~) , qui sélectionne un élément qui précède un autre élément dans l'arborescence DOM. En combinant cela avec le sélecteur :nth-child, nous pouvons alterner les couleurs des éléments ".parent" à chaque fois qu'un élément non-.parent est rencontré :

.parent:nth-child(odd) {
    background-color: green;
}
.parent:nth-child(even) {
    background-color: red;
}

/* after the first non-.parent, toggle colors */
li:not(.parent) ~ .parent:nth-child(odd) {
    background-color: red;
}
li:not(.parent) ~ .parent:nth-child(even) {
    background-color: green;
}

/* after the second non-.parent, toggle again */
li:not(.parent) ~ li:not(.parent) ~ .parent:nth-child(odd) {
    background-color: green;
}
li:not(.parent) ~ li:not(.parent) ~ .parent:nth-child(even) {
    background-color: red;
}
Copier après la connexion

Cette approche nous permet d'alterner les couleurs des éléments ".parent" tout en ignorant les éléments non-.parent. Cependant, le nombre d'éléments non-.parent que le sélecteur :nth-child peut anticiper est limité, cette technique peut donc ne pas être pratique pour les très longues listes avec de nombreuses classes alternées.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!