Rumah > hujung hadapan web > tutorial css > Mengapakah `transform: rotate()` Membatalkan `z-index`?

Mengapakah `transform: rotate()` Membatalkan `z-index`?

Mary-Kate Olsen
Lepaskan: 2024-12-23 20:43:14
asal
507 orang telah melayarinya

Why Does `transform: rotate()` Cancel Out `z-index`?

Z-index Dibatalkan oleh Transform(rotate)

Memahami Tingkah Laku

Dalam CSS, menggunakan sifat transform boleh mencipta "konteks tindanan" baharu " pada elemen. Ini bermakna elemen dan anak-anaknya membentuk lapisan berasingan dalam proses pemaparan. Selain itu, elemen dengan nilai indeks z bukan lalai juga mencipta konteks tindanannya sendiri.

Penjelasan Isu

Dalam kod yang disediakan, elemen .test telah mengubah: rotate(10deg);, yang mewujudkan konteks tindanan. Kemudian, .test:after pseudo-element diberikan z-index: -1. Ini, bagaimanapun, tidak meletakkannya di belakang .test.

Reason

Z-index beroperasi dalam konteks tindanan. Dengan menetapkan -webkit-transform pada .test, ia mewujudkan konteks tindanan baharu untuk elemen dan anak-anaknya. Akibatnya, indeks-z: -1 pada .test:after hanya mempengaruhi kedudukannya dalam konteks tindanan .test.

Penyelesaian

Untuk menyelesaikan isu ini, pastikan kedua-dua .test dan .test:selepas berkongsi konteks susun yang sama. Satu cara untuk mencapai ini ialah dengan meletakkan .test dalam bekas pembalut dan memutarkan bekas itu.

Contoh

Berikut ialah kod yang dikemas kini:

.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>
Salin selepas log masuk

Dalam contoh ini , putaran transformasi digunakan pada bekas .wrapper, mewujudkan konteks tindanan tunggal untuk kedua-dua .test dan .test:after. Ini membolehkan z-index: -1 pada .test:after berkuat kuasa seperti yang dijangkakan.

Atas ialah kandungan terperinci Mengapakah `transform: rotate()` Membatalkan `z-index`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan