@property
=========

Limited availability
--------------------

This feature is not Baseline because it does not work in some of the most widely-used browsers.

* Learn more
* See full compatibility
* Report feedback
**Expérimental:** **Cette fonction est expérimentale**  
Puisque cette fonction est toujours en développement dans certains navigateurs, veuillez consulter le tableau de compatibilité pour les préfixes à utiliser selon les navigateurs.  
Il convient de noter qu'une fonctionnalité expérimentale peut voir sa syntaxe ou son comportement modifié dans le futur en fonction des évolutions de la spécification.

La règle `at-rule` CSS **`@property`** fait partie du panel d'API CSS Houdini (en-US), qui permet de définir explicitement leurs propriétés CSS personnalisées (voir `CSS custom properties`). Cela permet la vérification des types de propriétés, de leur donner des valeurs par défaut et de déterminer si une propriété peut hériter ses valeurs ou non.

La règle `@property` permet l'enregistrement d'une propriété personnalisée directement dans une feuille de styles sans avoir à utiliser la moindre ligne de JavaScript. Une règle `@property` valide enregistre une nouvelle propriété personnalisée comme si `CSS.registerProperty` (en-US) avait été appelé avec les mêmes paramètres.

Syntaxe
-------


```css
@property --property-name {
  syntax: "<color>";
  inherits: false;
  initial-value: #c0ffee;
}
```

### Descripteurs

`syntax` (en-US)

Décrit la syntaxe autorisée de la propriété.

`inherits` (en-US)

Détermine si l'enregistrement de la propriété personnalisée spécifiée avec `@property` hérite ou non par défaut.

`initial-value` (en-US)

Détermine la valeur initiale de la propriété.

Une règle `@property` valide enregistre une propriété personnalisée avec comme nom de propriété la sérialisation de du préfixe de la règle.

Une règle `@property` nécessite le respecte d'une syntaxe (voir `syntax` (en-US)) et une description d'héritage (voir `inherits` (en-US)). Si l'un des deux manque, l'ensemble de la règle est invalide et celle-ci doit être ignorée. Le descripteur `initial-value` (en-US) est optionnel, uniquement si la syntaxe est une définition de syntaxe universelle. Sinon, le descripteur est requis (s'il manque, l'ensemble de la règle est invalide et celle-ci doit être ignorée).

Les descripteurs inconnus ne sont pas valides et sont ignorés, mais n'invalident pas l'ensemble de la règle `@property`.

Exemples
--------

Ajout d'une vérification de type à la `propriété personnalisée` `--my-color` en tant que couleur et que valeur par défaut, sans lui permettre d'hériter de sa valeur :

Utilisation de la règle CSS at-rule `@property` :


```css
@property --my-color {
  syntax: "<color>";
  inherits: false;
  initial-value: #c0ffee;
}
```


Équivalent avec la fonction JavaScript `CSS.registerProperty` (en-US) :


```js
window.CSS.registerProperty({
  name: "--my-color",
  syntax: "<color>",
  inherits: false,
  initialValue: "#c0ffee",
});
```

Syntaxe formelle
----------------
```

@property =   
  @property <custom-property-name> { <declaration-list> }    
  
```

Spécifications
--------------

| Specification |
| --- |
| CSS Properties and Values API Level 1 # at-property-rule |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* API Propriétés et valeurs CSS
* API Peinture CSS (en-US)
* API Typage de modèle d'objet CSS (en-US)
* CSS Houdini (en-US)