ホームページ >ウェブフロントエンド >CSSチュートリアル >変換された要素で z-index が失敗する理由とその修正方法は?

変換された要素で z-index が失敗する理由とその修正方法は?

DDD
DDDオリジナル
2024-12-15 05:19:11841ブラウズ

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

変換のため z-index がキャンセルされました

提供されたコードでは、CSS プロパティ z-index は要素に適用されると機能を失います。変換プロパティを適用した後にテストします。この問題は、transform プロパティが要素の新しいスタッキング コンテキストを確立するために発生します。

スタッキング コンテキストは、重複する要素が表示される順序を決定します。通常、同じスタッキング コンテキスト内では、より高い z-index 値を持つ要素が、より低い z-index 値を持つ要素の上に表示されます。ただし、z-index は単一のスタッキング コンテキストにのみ適用されます。

このシナリオでは、transform プロパティを持つ .test 要素が独自のスタッキング コンテキストを作成しています。疑似要素 .test:after は、.test の子ですが、この新しいスタッキング コンテキスト内に残ります。したがって、.test:after で z-index: -1 を設定すると、.test のスタッキング コンテキスト内に配置されるだけで、.test の背後には配置されません。

これを解決するには、**新しい.test と .test:after** の両方をコンテナ要素でラップすることにより、コンテキストをスタックします。このアプローチにより、それらが同じスタッキング コンテキストを共有することが保証され、z-index` が期待どおりに機能できるようになります。

変更されたコードは次のとおりです:

.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;
}

.wrapper 用に別のスタッキング コンテキストを作成することによって、.test と .test:after は両方とも同じコンテキストを共有します。これにより、z-index は、目的の回転を維持しながら、.test:after を .test の後ろに正しく配置できるようになります。

以上が変換された要素で z-index が失敗する理由とその修正方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。