Maison >interface Web >tutoriel CSS >@Supports Selector ()

@Supports Selector ()

Lisa Kudrow
Lisa Kudroworiginal
2025-03-18 12:06:10428parcourir

La capacité de la règle @supports à vérifier le support des sélecteurs est étonnamment robuste! Bien que souvent utilisé pour tester property: value , la fonction selector() étend ses capacités pour évaluer le support du sélecteur. Cela se fait en plaçant simplement le sélecteur dans les parenthèses:

 @Supports Selector (: nth-child (1 of .foo)) {
  / * Styles appliqués si le sélecteur est pris en charge * /
}

Le sélecteur :nth-child(n of .foo) , un "argument de la liste des sélecteurs" compatible avec :nth-child Family Selecteurs, en sert un bon exemple. Actuellement, seul Safari prend en charge ce sélecteur spécifique.

Considérez un scénario où vous devez coiffer une liste avec des séparateurs et des rayures zébrées. Idéalement, vous utiliseriez un sélecteur comme celui-ci pour réaliser le rayage du zèbre tout en ignorant les séparateurs:

 li: nième-enfant (impair de .list-item) {
  Contexte: LightGoldenRodyellow;
}

Cependant, en raison de la prise en charge limitée du navigateur, vous pouvez utiliser @supports pour appliquer conditionnellement ce style:

 @Supports Selector (: nth-child (1 of .foo)) {
  li {
    rembourrage: 0,25EM;
  }
  li: nième-enfant (impair de .list-item) {
    Contexte: LightGoldenRodyellow;
  }
  li.separator {
    Style de liste: aucun;
    marge: 0,25em 0;
  }
}
@Supports pas sélecteur (: nth-child (1 de .foo)) {
  li.separator {
    hauteur: 1px;
    Style de liste: aucun;
    Border-top: 1px en pointillé violet;
    marge: 0,25em 0;
  }
}

Cela fournit un style de secours pour les navigateurs manquant de support pour le sélecteur avancé. Une syntaxe améliorée, potentiellement à l'aide @when et @else , pourrait simplifier ceci:

 / * Syntaxe future hypothétique * /
@when supports (sélecteur (: nth-child (1 de .foo))) {
  / * Styles pour soutenir les navigateurs * /
} @autre {
  / * Styles de secours * /
}

Une API JavaScript existe également pour tester le support du sélecteur:

 CSS.Supports ("Selector (: Nth-Child (1 of .foo))")

Cette méthode renvoie true dans Safari et false dans Chrome (au moment de la rédaction).

Bien que la règle @supports soit puissante, le nombre de sélecteurs CSS avec un support inter-navigateur incohérent et le nombre de cas d'utilisation nécessitant @supports pour ces sélecteurs, est relativement faible. De nombreux sélecteurs précédemment problématiques, tels que ::marker et sélecteurs d'attribut insensibles à la casse, bénéficient désormais d'un large soutien. Des sélecteurs comme :fullscreen ou :-webkit-full-screen peut offrir des applications intéressantes et utiles en raison de leur manque de soutien unique dans iOS Safari.

@Supports Selector ()

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