[Browser yang berpartisipasi dalam pengujian: IE6/IE7/IE8/FF3/OP9.6/SF3/Chrome2]
[Sistem Operasi: Windows]
Tampaknya banyak siswa yang terobsesi dengan masalah mengapa div ini ada di lapisan atas dan div itu ada di lapisan bawah, dan tidak peduli bagaimana mereka mengatur indeks-z, mereka tidak bisa mendapatkannya ke atas Mereka menderita muntah-muntah dan diare, mual dan susah tidur, dan akhirnya mengalami depresi. Namun efek superposisi lapisan sering muncul dalam desain interaksi, jadi kita harus mengendalikannya, kita harus menguasai hukumnya.
Pertama, perjelas beberapa konsep yang perlu digunakan dalam artikel ini :
Catatan: Konsep-konsep ini disesuaikan oleh penulis dan hanya digunakan dalam artikel ini.
Kutipan:
Elemen rekan adalah kata yang sangat penting dan perlu dijelaskan secara detail di sini.
Dalam contoh ini, div#a dan div#b bukan "elemen saudara". Hanya elemen seperti div#b dan div#c yang memiliki div#f induk yang sama yang dapat disebut "elemen saudara".
Akhirkutipan
Mari kita lihat lima aturan ini :
Aturan 1: Ketika elemen saudara diposisikan dengan cara yang sama dan tidak ada pengaturan indeks-z, html akan ditempatkan di atas yang terakhir.
Jalankan kotak kode
[Ctrl+A pilih semua tip: Anda dapat memodifikasi beberapa kode terlebih dahulu]
Aturan 2: Ketika elemen saudara diposisikan secara dinamis dan memiliki pengaturan indeks-z, elemen dengan nilai indeks-z yang lebih besar akan didahulukan.
Jalankan kotak kode
[Ctrl+A Semua tip pemilihan: Anda dapat memodifikasi bagian kode terlebih dahulu]
Aturan 3: Ketika elemen saudara diposisikan dengan cara yang berbeda, posisikan secara dinamis di atas.
Jalankan kotak kode
[Ctrl+A Semua tip pemilihan: Anda dapat memodifikasi sebagian kode terlebih dahulu]
Aturan 4: Jika elemen non-saudara, salah satu elemen tersebut dan elemen leluhurnya tidak memiliki tata letak dinamis, html akan diutamakan.
Jalankan kotak kode
[Ctrl+A pilih semua tip: Anda dapat memodifikasi beberapa kode terlebih dahulu]
Aturan 5 : [Penting] Ketika salah satu elemen non-saudara atau elemen leluhurnya memiliki posisi dinamis, cari elemen leluhur yang diposisikan secara dinamis ke atas pada saat yang sama, dan keluarkan elemen leluhur tingkat tertinggi (atau dirinya sendiri) untuk perbandingan.
Kasus 1: Tidak peduli seberapa besar indeks-z elemen turunan, elemen induk yang lebih besar akan didahulukan.
Kasus 2: Elemen induk ditempatkan di bagian bawah, dan elemen anak juga dapat ditempatkan di atas.
Kasus 1 dan kasus 2 digabungkan dengan perbandingan yang diperluas.
Jalankan kotak kode
[Ctrl+A Semua tips pemilihan: Anda dapat memodifikasi sebagian kode terlebih dahulu]
Kutipan:
Sebenarnya empat poin pertama adalah dasar, hanya poin kelima yang lebih sulit untuk dipahami. Berikut penjelasan detailnya:
Dalam contoh ini, kami membandingkan hubungan berjenjang antara div#a_inner5 dan div#b_inner4.
Hingga tingkat berikutnya dari elemen leluhur div#ab yang mereka bagikan, elemen leluhur div#a_inner5 meliputi: div#a, div#a_inner1, div#a_inner2, div#a_inner3, div#a_inner4; Elemennya meliputi: div#b,div#b_inner1,div#b_inner2,div#b_inner3.
Kemudian menganalisis elemen dengan posisi dinamis di antara elemen leluhurnya: elemen dengan posisi dinamis di antara elemen leluhur div#a_inner5 adalah: div#a, div#a_inner3 elemen dengan posisi dinamis di antara elemen leluhur div#b_inner4 adalah: div#b_inner3.
Kemudian ambil level tertinggi untuk perbandingan: div#a > #div#b_inner3.
Ketika elemen induk berada di bawah dan elemen anak juga bisa berada di atas, elemen non-saudara digunakan. Ketika elemen leluhur memiliki tata letak dinamis, perbandingannya tidak ada hubungannya dengan posisi: statis, melainkan leluhurnya elemen dapat dibandingkan melalui posisi html.
Akhir kutipan
Tentu saja, terkadang ada kasus khusus, seperti flash dan select di IE6 yang tidak dapat dicakup. Ini adalah situasi yang tidak normal.