Maison > interface Web > tutoriel CSS > Pourquoi z-index échoue-t-il sur les éléments transformés et comment peut-il être corrigé ?

Pourquoi z-index échoue-t-il sur les éléments transformés et comment peut-il être corrigé ?

DDD
Libérer: 2024-12-15 05:19:11
original
841 Les gens l'ont consulté

Why Does z-index Fail on Transformed Elements and How Can It Be Fixed?

z-index annulé en raison d'une transformation

Dans votre code fourni, la propriété CSS z-index perd sa fonctionnalité lorsqu'elle est appliquée à l'élément . test après avoir appliqué une propriété de transformation. Ce problème se pose car la propriété transform établit un nouveau contexte d'empilement pour l'élément.

Les contextes d'empilement déterminent l'ordre dans lequel les éléments qui se chevauchent sont affichés. En règle générale, les éléments avec une valeur d'index z plus élevée apparaissent au-dessus des éléments avec une valeur d'index z inférieure dans le même contexte d'empilement. Cependant, z-index ne s'applique que dans un seul contexte d'empilement.

Dans votre scénario, l'élément .test avec sa propriété transform a créé son propre contexte d'empilement. Le pseudo-élément .test:after, bien qu'enfant de .test, reste dans ce nouveau contexte d'empilement. Par conséquent, définir z-index: -1 sur .test:after le positionne uniquement dans le contexte d'empilement de .test mais ne le place pas derrière .test.

Pour résoudre ce problème, vous pouvez **créer un nouveau contexte d'empilement pour .test et .test:after** en les enveloppant dans un élément conteneur. Cette approche garantit qu'ils partagent le même contexte d'empilement, permettant à z-index` de fonctionner comme prévu.

Voici le code modifié :

.wrapper {
    -webkit-transform: rotate(10deg);
}
.test {
       width: 150px;
       height: 40px;
       margin: 30px;
       line-height: 40px;
       position: relative;
       background: white;
}
.test:after {
       width: 100px;
       height: 35px;
       content: "";
       position: absolute;
       top: 0;
       right: 2px;
       -webkit-box-shadow: 0 5px 5px #999; /* Safari and Chrome */
       -webkit-transform: rotate(3deg); /* Safari and Chrome */
       transform: rotate(3deg);
       z-index: -1;
}
Copier après la connexion

En créant un contexte d'empilement distinct pour .wrapper , .test et .test:after partagent le même contexte. Cela permet à z-index de positionner correctement .test:after derrière .test tout en conservant la rotation souhaitée.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal