@scope - Directive CSS

@scope

Résumé des caractéristiques de la directive @scope

Description rapide
Limite la portée des instructions englobées par cette directive.
Statut
Problèmes de compatibilité
Pourcentages
Ne s'appliquent pas.
Module W3C
Module CSS - Cascade et héritage
Statut du document: WD (document de travail)

Description de la directive @scope.

La directive @scope limite la portée des sélecteurs qu'il renferme. Tout se passe comme si @scope permettait d'appliquer des styles à une partie seulement du document.

Exemple. Imaginons le code HTML et le code CSS suivants. On retrouve deux directives @scope ciblant chacune une des sections. Chacune des sections contient un titre h2 et un paragraphe p. Avec le CSS indiqué, seul le premier titre h2 passera en rouge. Le deuxième titre passera lui en vert.

<section id="section1"> <h3>Titre de la section 1.</h3> <p>Texte de la section 1.</p> </section> <section id="section2"> <h3>Titre de la section2.</h3> <p>Texte de la section 2.</p> </section>
@scope (#section2) { h3 {color:green;} } @scope (#section1) { h3 {color:red;} p {color:red;} }
Et voici le résultat. La stylisation de la section 2 est antérieure à celle de la section 1. Pourtant elle n'écrase pas les styles précédents. De toute façon le paragraphe de la section 2 n'est pas stylé, alors qu'il l'est dans la section 1.

Titre de la section 1.

Texte de la section 1.

Titre de la section 2.

Texte de la section 2.

Si vous écrivez des composants, la directive @scope vous permet de les styler sans écrire l'identifiant de votre composant dans chacune de vos règles, et sans que les styles risquent de perturber le reste de la page.

@scope a plusieurs effets :

  • Les sélecteurs à l'intérieur d'une directive @scope sont limitées à cette portée.
  • Le sélecteur :scope fait référence aux éléments ciblés par @scope.
  • Les règles de priorité sont changées.

Sélecteurs spéciaux.

Le sélecteur :scope cible la racine définie par @scope. Par exemple, dans une directive @scope (#id) le sélecteur :scope cible l'élément dont l'identifiant est id. Il est nécessaire pour appliquer des styles à cet élément.
Dans le cas de directives @scope imbriquée, @scope faire référence à la dernière rencontrée. Par exemple, ci-dessous :scope fait référence aux éléments de la classe edito.

@scope (#id1) { @scope(.edito) {/ :scope { ... } } }

Il existe également un sélecteur & qui représente le sélecteur de la racine. La différence entre & et :scope est dans la spécificité (priorité) de chacun de ces sélecteurs. D'autre part, le sélecteur & fonctionne également en dehors d'une directive @scope. Alors que le sélecteur :scope, utilisé en dehors d'une directive @scope, est équivalent à :root. Il est possible d'écrire par exemple :

#section3 { color:red; & h3 { text-decoration:underline; } }

Spécificité des sélecteurs, règles de priorités.

Le sélecteur :scope a une spécificité de 10, de même que toutes les pseudo-classes, quelque soit la spécificité du sélecteur racine (spécifié par @scope). Tandis que le sélecteur & à la même spécificité que le sélecteur racine. Les deux exemples ci-dessous illustrent cette différence.

Titre de la section 5.

Texte de la section 5.

Titre de la section 6.

Texte de la section 6.


Reportez-vous au sélecteur :scope ou au sélecteur & pour davantage de précisions sur ces sélecteurs. Vous pouvez aussi, en cas de besoin, consulter la page sur Les priorités.

Syntaxes de la directive @scope.

  • @scope: ( <selector> ) { ... }

    Avec un seul paramètre, la directive @scope limite la portée à la portion du document correspondant à sélecteur.

  • @scope: ( <selector1> ) to ( <selector2> ) { ... }

    Avec deux paramètres, la directive @scope limite la portée à tous les sélecteurs compris entre selector1 inclus et selector2 exclus.

  • Compatibilité des navigateurs avec la directive @scope.

    Colonne 1
    Reconnaissance par les navigateurs de la directive @scope qui limite la portée des règles qu'il contient.
    1
    Directive
    @scope
    Estimation de la prise en charge globale.
    84%

    Navigateurs sur ordinateurs :

    Navigateurs sur mobiles :

    Navigateurs obsolètes ou marginaux :

    Internet Explorer

    UC Browser pour Androïd

    Opéra Mobile

    QQ Browser

    Baidu Browser

    Opéra

    Safari

    Safari sur IOS

    Samsung Internet

    Chrome

    Firefox

    Edge

    Androïd Brower

    Chrome pour Androïd

    Firefox pour Androïd

    KaiOS Browser

    Opéra mini

    Évolution de la directive @scope.

    Voir aussi, au sujet de la cascade.

    Le module de spécification CSS Cascading and Inheritance regroupe toutes les notions générales de CSS : l'héritage, les couches de styles, etc. Il contient également la définition pour @scope.

    Propriétés :

    all
    Initialisation de toutes les propriétés.

    Directives :

    @import
    Importation d'une feuille de styles, avec la possibilité de choisir une couche de cascade.
    @layer
    Définit les couches de cascade (layer) pour faciliter la gestion des priorités entre les règles CSS.

    Valeurs:

    !important
    Rend une règle prioritaire sur toutes les autres.
    inherit
    Donne à une propriété la même valeur que celle de l'élément parent.
    initial
    Redonne à une propriété sa valeur initiale.
    revert
    Donne à une propriété la valeur définie par le navigateur.
    revert-layer
    Rétablit la valeur d'une propriété à la valeur qu'elle avait à la couche précédente.
    unset
    Donne à une propriété la valeur qu'elle aurait eu si aucun style ne l'avait changée.