Le contenu de cet article est de vous aider à mieux comprendre le concept de cascade CSS. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.
J'ai récemment rencontré un problème pendant le projet. La barre de menu veut toujours être affichée en haut, et tous les éléments suivants seront affichés en dessous même si le z-index a été défini sur. le moment venu, cela ne fonctionnerait pas. Je ne connais pas la raison de l'effet, alors j'ai cherché des informations sur l'empilement CSS et j'ai résolu ce problème. Je vais l'enregistrer ici~
L'écran est un deux. -plan dimensionnel, mais les éléments HTML sont disposés dans un système de coordonnées tridimensionnel, x est la position horizontale, y est la position verticale et z est la position de l'écran de l'intérieur vers l'extérieur. l'écran, on suit la direction de l'axe z de l'extérieur vers l'intérieur ; ainsi, les éléments forment une cascade du point de vue de l'utilisateur, un élément peut recouvrir d'autres éléments ou peut être recouvert par d'autres éléments
Ensuite, il y a plusieurs concepts importants ici :
Contexte de pile (Contexte de pile, Contexte de pile), Niveau de pile (Contexte de pile Niveau, Niveau d'empilement), Ordre d'empilement (Ordre d'empilement, Ordre d'empilement),z-index
Déclaration :
contexte de formatage au niveau du bloc (BFC, Block Formatting Context), vous pouvez vous référer à l'important BFC en CSS, qui introduit également certains contenu du flux de documents ;
Le Contexte de Stacking 1 (Contexte de Stacking 1) est formé par l'élément racine du document, le Contexte de Stacking 2 et 3 (Contexte de Stacking 2, 3) Ce sont tous des couches empilables sur le contexte d'empilement 1. Chacun d'eux forme également un nouveau contexte de superposition, qui contient de nouveaux calques de superposition. Dans un contexte en cascade, ses éléments enfants sont cascadés selon les règles expliquées ci-dessus. Les méthodes pour former un contexte en cascade sont : élément racinela valeur de position est absolue | relative et la valeur de l'index z n'est pas automatiqueéléments flex dont la valeur de position est fixe | stickyla valeur de l'index z n'est pas automatique, c'est-à-dire : affichage de l'élément parent : flex | inline-flexéléments dont la valeur de l'attribut d'opacité est inférieure que 1éléments dont la valeur d'attribut de transformation n'est pas nulleéléments mix-blend-mode dont la valeur d'attribut n'est pas normalefiltre, perspective, chemin de clip, masque, mask-image, éléments avec des valeurs de bordure de masque et de chemin de mouvement qui ne sont pas nulles éléments de perspective avec une valeur autre qu'aucune les attributs d'isolation sont définis pour isoler les éléments
will-change Spécifiez toutes les propriétés CSS, même si vous ne spécifiez pas directement la valeur de ces propriétés -l'attribut -webkit-overflow-scrolling est défini pour toucher les éléments Résumé :
Chaque contexte d'empilement est complètement indépendant de ses éléments frères, seuls les éléments enfants sont pris en compte lors du traitement de l'empilement, ici c'est similaire à BFC
Chaque contexte d'empilement Il est autonome : lorsque le contenu d'un élément est cascadé, l'élément entier sera cascadé dans l'ordre dans le contexte d'empilement parent
Niveau d'empilement (Niveau d'empilement) Le concept qui détermine l'ordre d'affichage des éléments dans le même contexte d'empilement sur l'axe z ;
Le niveau d'empilement des éléments ordinaires est déterminé par le contexte d'empilement dans lequel il se trouve
La comparaison des niveaux d'empilement n'est possible qu'au sein du même. élément de contexte d'empilement. Signification
Dans le même contexte d'empilement, la description du niveau d'empilement définit l'ordre supérieur et inférieur des éléments dans le contexte d'empilement sur l'axe Z
Notez que le niveau d'empilement n'est pas nécessairement déterminé par le z-index. Seul le niveau d'empilement des éléments positionnés est déterminé par le z-index. Le niveau d'empilement des autres types d'éléments est déterminé par l'ordre d'empilement, le. l'ordre dans lequel ils apparaissent en HTML et leurs parents. Le niveau d'empilement des éléments est déterminé ensemble Pour des règles détaillées, voir l'introduction de l'ordre d'empilement ci-dessous.
-- CSS 2.1 Section 9.9.1 - Présentation en couches
z-index s'applique uniquement aux éléments positionnés et n'est pas valide pour les éléments non positionnés. Il peut être défini sur un entier positif, un entier négatif, 0. , auto , si un élément positionné ne définit pas le z-index, la valeur par défaut est auto ; la valeur z-index des éléments
n'a de sens que dans le même contexte d'empilement. Si le niveau d'empilement du contexte d'empilement parent est inférieur à celui d'un autre contexte d'empilement, alors il est inutile de définir un z-index plus élevé. Ainsi, si vous constatez que la valeur du z-index est définie sur une valeur élevée mais que cela ne fonctionne pas, vérifiez si son contexte d'empilement parent est couvert par d'autres contextes d'empilement.
Stacking Order (Stacking Order, Stacking Order, Stacking Order) décrit l'ordre des éléments dans le même contexte d'empilement Règles , en partant du bas de la pile, il y a sept ordres d'empilement :
Arrière-plan et bordure : L'arrière-plan et la bordure des éléments qui forment le contexte d'empilement cadre.
Valeur d'indice z négative : Sous-élément positionné avec une valeur d'indice z négative dans le contexte d'empilement. Plus le niveau négatif est grand, plus le niveau d'empilement est bas ;
Boîte de niveau bloc : sous-élément de niveau bloc non positionné dans le flux de documents
Boîte flottante : Élément flottant non positionné
Boîte en ligne : Sous-élément en ligne, non positionné dans le flux de documents
z-index : 0 : Éléments positionnés avec z-index 0 ou auto, ces éléments forment un nouveau contexte d'empilement
Valeur z-index positive : élément positionné avec un z-index positif. Plus la valeur positive est grande, plus le niveau d'empilement est élevé
5. Combat réel 5.1 Situation couranteLes trois blocs div relativement positionnés ont chacun span.red, span.green et span.blue. de couleurs absolument différentes, et ils sont tous définis sur position: absolue Voir Codepen - Cas normal Ensuite, lorsqu'aucun élément ne contient l'attribut z-index, les éléments de cet exemple sont empilés dans l'ordre suivant (de bas en haut) :
Le rouge et le vert sont situés sous une p.first-box, le bleu et le jaune sont situés sous une p.second-box, et la position : absolue est définie pour rouge, vert et bleu. Si ceci Lors de l'ajout d'un attribut z-index : 1 au vert, alors .green est en haut
Si vous ajoutez un span.gold positionné de manière absolue après .green sous .second- ; case, définissez z-index : -1, alors il sera situé en dessous du rouge, du vert et du bleu
Voir Codepen - z-index est défini
Dans cet exemple, le rouge, le bleu ; , les éléments verts et jaunes ne sont pas dans l'élément parent Générez de nouveaux contextes en cascade, qui appartiennent tous aux éléments du contexte en cascade racine
Le rouge et le bleu n'ont pas d'index z. set Ils appartiennent tous les deux au 6ème niveau dans l'ordre en cascade. Selon l'occurrence en HTML Cascade séquentielle
Green définit un z-index positif, appartenant au niveau 7; >
Donc, dans cet exemple, l'ordre du plus bas au plus élevé est : bleu->rouge->vert
(La situation que j'ai rencontrée est similaire à cet exemple)
5.5 Définir l'opacité
pour les éléments enfants. Le rouge et le vert sont situés sous p.first-box, le bleu est situé sous p.second-box Position : l'absolu est défini pour le rouge, le vert et le bleu, et le z-index : 1. est défini sur le vert. Ensuite, le vert est au sommet du rouge et du bleu à ce moment-là
Si vous ajoutez span.gold après .green sous .second-box et définissez z-index : -1, alors il sera situé en dessous du rouge, du vert et du bleu
Voir Codepen - l'impact de l'opacité
Comme mentionné précédemment, définir l'opacité peut également former un contexte en cascade, donc :
1. La première boîte définit l'opacité et la première boîte devient un nouveau contexte d'empilement
2 La deuxième boîte ne forme pas un nouveau contexte d'empilement, donc les éléments qu'elle contient appartiennent à l'empilement racine ; contexte ;
3. Le jaune appartient au deuxième niveau dans la séquence d'empilement, le rouge et le vert appartiennent au niveau 7, la première case appartient au niveau 6, le bleu appartient au niveau 6 dans la séquence d'empilement et est au-dessus du première case dans l'ordre d'apparition du HTML ;
Donc, dans cet exemple, de bas à jusqu'à Ordre d'affichage : jaune->rouge->vert->bleu
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!