Maison >interface Web >tutoriel CSS >CSS `:not()` cible-t-il sélectivement uniquement les enfants et petits-enfants immédiats ?
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; }
Cette règle style tous les enfants ou petits-enfants directs de
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>
Dans ce cas, l'élément
l'élément correspond à la condition *:not(p) puisqu'il est un descendant de, tandis que l'élémentl'é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; }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; }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!
Déclaration: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