Rumah >hujung hadapan web >tutorial css >Mengapa indeks-z Gagal pada Elemen Berubah dan Bagaimana Ia Boleh Dibetulkan?

Mengapa indeks-z Gagal pada Elemen Berubah dan Bagaimana Ia Boleh Dibetulkan?

DDD
DDDasal
2024-12-15 05:19:11842semak imbas

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

z-index Dibatalkan Kerana Transformasi

Dalam kod yang anda berikan, sifat CSS z-index kehilangan kefungsian apabila digunakan pada elemen . ujian selepas menggunakan sifat transformasi. Isu ini timbul kerana sifat transformasi mewujudkan konteks tindanan baharu untuk elemen.

Konteks tindanan menentukan susunan unsur bertindih dipaparkan. Biasanya, elemen dengan nilai indeks z yang lebih tinggi muncul di atas elemen dengan nilai indeks z yang lebih rendah dalam konteks tindanan yang sama. Walau bagaimanapun, indeks-z hanya digunakan dalam konteks tindanan tunggal.

Dalam senario anda, elemen .test dengan sifat transformasinya telah mencipta konteks tindanannya sendiri. Unsur pseudo .test:after, walaupun anak .test, kekal dalam konteks tindanan baharu ini. Oleh itu, menetapkan z-index: -1 pada .test:after hanya meletakkannya dalam konteks tindanan .test tetapi tidak meletakkannya di belakang .test.

Untuk menyelesaikannya, anda boleh **membuat yang baharu menyusun konteks untuk kedua-dua .test dan .test:after** dengan membungkusnya dalam elemen bekas. Pendekatan ini memastikan bahawa mereka berkongsi konteks tindanan yang sama, membolehkan z-index` berfungsi seperti yang diharapkan.

Berikut ialah kod yang diubah suai:

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

Dengan mencipta konteks tindanan yang berasingan untuk .wrapper , kedua-dua .test dan .test:after berkongsi konteks yang sama. Ini membolehkan indeks-z meletakkan .test:selepas di belakang .test dengan betul sambil mengekalkan putaran yang diingini.

Atas ialah kandungan terperinci Mengapa indeks-z Gagal pada Elemen Berubah dan Bagaimana Ia Boleh Dibetulkan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn