Maison > interface Web > tutoriel CSS > CSS `:not()` cible-t-il sélectivement uniquement les enfants et petits-enfants immédiats ?

CSS `:not()` cible-t-il sélectivement uniquement les enfants et petits-enfants immédiats ?

Susan Sarandon
Libérer: 2024-12-14 18:57:23
original
343 Les gens l'ont consulté

Does CSS `:not()` Selectively Target Only Immediate Children and Grandchildren?

Le sélecteur :not() s'étend-il aux descendants distants ?

En CSS3, la pseudo-classe :not() fournit un moyen pour exclure certains éléments d'un sélecteur. Cependant, son comportement peut prêter à confusion lorsqu'il s'agit de descendants éloignés.

Implémentation actuelle

Selon la documentation officielle et l'analyse du support du navigateur, le sélecteur :not() uniquement s'applique aux enfants ou petits-enfants directs de l'élément ciblé.

Considérez cet exemple :

div *:not(p) { color: red; }
Copier après la connexion

Cette règle style tous les enfants ou petits-enfants directs de

qui ne sont pas

Cependant, le sélecteur :not() ne s'étend pas au-delà des petits-enfants.

Le problème

Dans cet exemple, le  :

<div>
    <ul>
        <li>This is red</li>
    </ul>
    <p>This is NOT</p>
    <blockquote><p>This is red but is not supposed to be!</p></blockquote>
</div>
Copier après la connexion

Dans ce cas, l'élément

l'élément correspond à la condition *:not(p) puisqu'il est un descendant de
, tandis que l'élément

l'élément qu'il contient hérite de la couleur rouge.

Solution

Le comportement correct est pour l'élément

élément pour conserver sa couleur par défaut. Pour y parvenir, la règle doit cibler tous les

éléments directement :

div p { color: black; }
Copier après la connexion

Futures améliorations des sélecteurs CSS niveau 4

La proposition des sélecteurs CSS niveau 4 améliore le sélecteur :not() pour accepter des sélecteurs complexes complets avec combinateurs. Cela signifie que nous pourrons écrire des sélecteurs comme :

p:not(div p) { color: red; }
Copier après la connexion

Cette syntaxe étendue permettra un ciblage plus précis des descendants distants.

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