Movatterモバイル変換


[0]ホーム

URL:


  1. Web
  2. CSS
  3. Guides
  4. CSS Positioned Layout
  5. Le contexte d'empilement

Cette page a été traduite à partir de l'anglais par la communauté.Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in EnglishAlways switch to English

Le contexte d'empilement

Lecontexte d'empilement est une conceptualisation en trois dimensions de la façon dont les éléments HTML sont placés sur un axe de profondeur relatif à la personne qui fait face à la page web. Les éléments HTML s'organisent dans ce volume selon un ordre construit à partir des attributs de l'élément.

Le contexte d'empilement

Dans l'exemple précédent,Ajout de z-index, l'ordre de rendu de certains éléments était influencé par la valeur de la propriétéz-index. Cela se produit parce que ces éléments ont des propriétés spéciales qui entraînent la formation d'uncontexte d'empilement.

Un contexte d'empilement est formé dans le document par n'importe quel élément qui répond à l'un de ces critères :

  • L'élément racine du document (HTML)

  • Un élément pour lequelposition vautabsolute ourelative et pour lequelz-index est différente deauto

  • Un élément pour lequelposition vautfixed ousticky (sticky s'applique pour les navigateurs sur mobile mais pas aux anciens navigateurs de bureau)

  • Un élément qui est le fils d'un conteneur flexible (flexbox) pour lequelz-index est différente deauto

  • Un élément qui est le fils d'un conteneur en grille (grid) pour lequelz-index est différente deauto

  • Un élément pour lequelopacity est inférieure à 1 (cf.la spécification)

  • Un élément pour lequelmix-blend-mode est différente denormal

  • Un élément pour lequel n'importe laquelle de ces propriétés est différente denone :

  • Un élément pour lequelisolation vautisolate

  • Un élément pour lequel la valeur de la propriétéwill-change concerne une propriété qui créerait un contexte d'empilement avec une valeur non-initiale (voirce billet en anglais).

  • Un élément pour lequel la valeur de la propriétécontain estlayout,paint ou une valeur composite contenant un de ces mots-clés (par exemplecontain: strict oucontain: content).

Sans contexte d'empilement, les éléments enfants sont empilés selon les règles vues avant. Les valeurs desz-index pour les contextes d'empilement des éléments enfants ont uniquement un sens pour l'élément parent. Les contextes d'empilement sont traités de façon atomique, comme une seule unité, dans le contexte de l'élément parent.

En bref :

  • Les contextes d'empilement peuvent être enfants d'autres contextes d'empilement, et ensemble forment une hiérarchie de contextes d'empilement.
  • Chaque contexte d'empilement est indépendant de ses voisins : seuls les éléments enfants sont pris en compte lorsque l'empilement est traité.
  • Chaque contexte d'empilement est autonome : Une fois que le contenu de l'élément est empilé, l'élément entier est pris en compte dans l'ordre d'empilement du contexte parent.

Note :La hiérarchie des contextes d'empilement est un sous-ensemble de la hiérarchie des éléments HTML, car seuls les éléments positionnés dans l'espace (avec la propriétéz-index créent des contextes d'empilement. On peut dire que les éléments qui ne créent pas leur propre contexte d'empilement sontassimilés par le contexte d'empilement parent.

Un exemple

Exemple de règles d'empilement modifiées avec la propriété z-index

Dans cet exemple, tous les éléments positionnés créent leur propre contexte d'empilement, du fait de leur positionnement et de leur valeurz-index. La hiérarchie des contextes d'empilement est organisée comme suit :

  • Racine
    • DIV #1
    • DIV #2
    • DIV #3
      • DIV #4
      • DIV #5
      • DIV #6

Il est important de noter que les blocs DIV #4, DIV #5 et DIV #6 sont les enfants du bloc DIV #3, donc leur empilement est complètement résolu à l'intérieur de ce dernier. Une fois que l'empilement et le rendu à l'intérieur du bloc 3 sont définis, la totalité de l'élément DIV #3 est prise en compte pour l'empilement dans l'élément racine par rapport à ses DIV voisins.

Note :

  • DIV #4 est rendu dans le blocDIV #1 car lez-index (5) de celui-ci est valide à l'intérieur du contexte d'empilement de l'élément racine, alors que lez-index (6) du blocDIV #4 est valide à l'intérieur du contexte d'empilement du blocDIV #3. Ainsi, DIV #4 se trouve sousDIV #1, parce queDIV #4 appartient àDIV #3, qui possède une valeur dez-index plus petite.
  • Pour la même raisonDIV #2 (dont lez-index est 2) est rendu sousDIV#5 (dez-index égal à 1) parce queDIV #5 appartient àDIV #3, qui possède une valeur dez-index plus grande.
  • Lez-index du blocDIV #3 est 4, mais cette valeur est indépendante duz-index du blocDIV #4,DIV #5 etDIV #6, parce qu'il appartient à un contexte d'empilement différent.
  • Une méthode simple pour déterminerl'ordre de rendu des éléments empilés sur l'axe Z consiste à considérer cette valeur comme un numéro de version où les éléments enfants sont des versions mineures, placées sous les versions majeures portées par leurs parents. Ainsi, on peut voir comment un élément avec une propriétéz-index à 1 (DIV #5) est placé au-dessus d'un élément avecz-index à 2 (DIV #2), et comment un élément avecz-index à 6 (DIV #4) est empilé sous un élément avecz-index à 5 (DIV #1). Dans notre exemple, en triant selon l'ordre de rendu final, on a :
    • Racine
      • DIV #2 - z-index à 2
      • DIV #3 - z-index à 4
        • DIV #5 - z-index à 1, empilé sous un élément avecz-index à 4, qui aboutit à un ordre de rendu de 4.1
        • DIV #6 - z-index à 3, empilé sous un élément avecz-index à 4, qui aboutit à un ordre de rendu de 4.3
        • DIV #4 - z-index à 6, empilé sous un élément avecz-index à 4, qui aboutit à un ordre de rendu de 4.6
      • DIV #1 - z-index à 5

Exemple

HTML

html
<div>  <h1>Élément de division n°1</h1>  <code    >position: relative;<br />    z-index: 5;</code  ></div><div>  <h1>Élément de division n°2</h1>  <code    >position: relative;<br />    z-index: 2;</code  ></div><div>  <div>    <h1>Élément de division n°4</h1>    <code      >position: relative;<br />      z-index: 6;</code    >  </div>  <h1>Élément de division n°3</h1>  <code    >position: absolute;<br />    z-index: 4;</code  >  <div>    <h1>Élément de division n°5</h1>    <code      >position: relative;<br />      z-index: 1;</code    >  </div>  <div>    <h1>Élément de division n°6</h1>    <code      >position: absolute;<br />      z-index: 3;</code    >  </div></div>

CSS

css
* {  margin: 0;}html {  padding: 20px;  font:    12px/20px Arial,    sans-serif;}div {  opacity: 0.7;  position: relative;}h1 {  font: inherit;  font-weight: bold;}#div1,#div2 {  border: 1px dashed #696;  padding: 10px;  background-color: #cfc;}#div1 {  z-index: 5;  margin-bottom: 190px;}#div2 {  z-index: 2;}#div3 {  z-index: 4;  opacity: 1;  position: absolute;  top: 40px;  left: 180px;  width: 330px;  border: 1px dashed #900;  background-color: #fdd;  padding: 40px 20px 20px;}#div4,#div5 {  border: 1px dashed #996;  background-color: #ffc;}#div4 {  z-index: 6;  margin-bottom: 15px;  padding: 25px 10px 5px;}#div5 {  z-index: 1;  margin-top: 15px;  padding: 5px 10px;}#div6 {  z-index: 3;  position: absolute;  top: 20px;  left: 180px;  width: 150px;  height: 125px;  border: 1px dashed #009;  padding-top: 125px;  background-color: #ddf;  text-align: center;}

Résultat

Voir aussi

Help improve MDN

Learn how to contribute

Cette page a été modifiée le par lescontributeurs du MDN.


[8]ページ先頭

©2009-2026 Movatter.jp