CSS では、transform プロパティを使用して新しい「スタッキング コンテキスト」を作成できます" 要素上で。これは、要素とその子がレンダリング プロセスで別のレイヤーを形成することを意味します。さらに、デフォルト以外の z-index 値を持つ要素も独自のスタッキング コンテキストを作成します。
提供されたコードでは、.test 要素にtransform:rotate(10deg);,これにより、スタッキングコンテキストが作成されます。次に、.test:after 疑似要素に z-index: -1 が割り当てられます。ただし、これは .test.
Z-index の背後に配置されるわけではなく、スタッキング コンテキスト内で動作します。 .test に -webkit-transform を設定すると、要素とその子の新しいスタッキング コンテキストが作成されます。結果として、.test:after の z-index: -1 は、.test スタッキング コンテキスト内の位置にのみ影響します。
この問題を解決するには、.test と.test:after は同じスタッキング コンテキストを共有します。これを実現する 1 つの方法は、ラッピング コンテナーに .test を配置し、代わりにコンテナーを回転させることです。
更新されたコードは次のとおりです:
.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; -webkit-transform: rotate(3deg); transform: rotate(3deg); z-index: -1; } <div class="wrapper"> <div class="test">z-index is canceled.</div> </div>
この例ではを実行すると、変換回転が .wrapper コンテナに適用され、.test と .test:after の両方に単一のスタッキング コンテキストが作成されます。これにより、.test:after の z-index: -1 が期待どおりに有効になります。
以上がなぜ `transform:rotate()` が `z-index` をキャンセルするのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。