contain
=======

Baseline 2023
-------------

Newly availableSince February 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or 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 propriété CSS **`contain`** permet d'indiquer qu'un élément, ainsi que son contenu, sont, autant que possible, indépendants du reste de l'arbre du document. Cela permet au navigateur de recalculer la disposition, la mise en forme, la taille, les *peintures* ou toute combinaison de ces éléments pour une zone donnée du DOM plutôt que pour la page complète.


```css
/\* Valeurs avec un mot-clé \*/
contain: none;
contain: strict;
contain: content;
contain: size;
contain: layout;
contain: style;
contain: paint;

/\* Valeurs globales \*/
contain: inherit;
contain: initial;
contain: unset;
```


Cette propriété s'avère utile pour les pages qui contiennent de nombreux composants indépendants et permet de limiter la portée des règles sur le reste de la page.

**Note :** Lorsqu'elle est appliquée avec une valeur `paint`, `strict` ou `content`, cette propriété crée :

* un nouveau bloc englobant (le bloc servant de référence pour les éléments fils dont la position sera absolue ou `fixed`)
* un nouveau contexte d'empilement
* un nouveau contexte de formatage de bloc.

Syntaxe
-------

### Valeurs

`none`

L'élément est affiché normalement, aucun confinement n'est appliqué.

`strict`

Toutes les règles possibles de confinement à l'exception de `style` sont appliquées. Cela correspond à `contain: size layout paint`.

`content`

Toutes les règles de confinement, à l'exception de celles pour `size` et `style`, sont appliquées à l'élément. Cela est équivalent à `contain: layout paint`.

`size`

Cette valeur indique que l'élément peut être dimensionné sans avoir à examiner les éléments descendants pour les modifications de la taille.

`layout`

Cette valeur indique qu'aucun élément en dehors de l'élément, ne peut impacter sa disposition interne et réciproquement.

`style`

Cette valeur indique que les propriétés ayant un effet sur un élément et ses descendants voire plus sont bien limitées à l'élément englobant.

`paint`

Cette valeur indique que les éléments descendants de l'élément ne sont pas affichés en dehors de ses limites. Si un élément est en dehors de l'écran ou n'est pas visible, cette valeur assure que les éléments descendants ne sont pas visibles non plus.

Définition formelle
-------------------

|  |  |
| --- | --- |
| Valeur initiale | `none` |
| Applicabilité | tous les éléments |
| Héritée | non |
| Valeur calculée | comme spécifié |
| Type d'animation | Not animatable |

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

contain =   
  none                                  |  
  strict                                |  
  content                               |  
  [ size || layout || style || paint ]    
  
```

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

| Specification |
| --- |
| CSS Containment Module Level 2 # contain-property |

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

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

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

* La propriété CSS `position`