Saya punya div
dengan posisi default (yaitu position:static
) dan div
dengan fixed
posisi.
Jika saya mengatur indeks-z elemen, tampaknya mustahil untuk membuat elemen tetap berada di belakang elemen statis.
#over {
width: 600px;
z-index: 10;
}
#under {
position: fixed;
top: 5px;
width: 420px;
left: 20px;
border: 1px solid;
height: 10%;
background: #fff;
z-index: 1;
}
<!DOCTYPE html>
<html>
<body>
<div id="over">
Hello Hello HelloHelloHelloHelloHello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello
</div>
<div id="under">
</div>
</body>
</html>
Atau di jsfiddle di sini: http://jsfiddle.net/mhFxf/
Saya dapat mengatasi ini dengan menggunakan
position:absolute
elemen statis, tetapi adakah yang bisa memberitahu saya mengapa ini terjadi?
(Tampaknya ada pertanyaan yang mirip dengan yang ini, ( Fixed Positioning breaking z-index ) tapi itu tidak memiliki jawaban yang memuaskan, maka saya bertanya di sini dengan kode contoh saya)
Tambahkan
position: relative;
ke # lebihBiola
sumber
</body>
dan tag ekstra</html>
pada akhirnya.position: relative
dari elemen berlebihan sebenarnya memperbaiki masalah saya.z-index hanya berfungsi dalam konteks tertentu yaitu
relative
,fixed
atauabsolute
posisi.z-index untuk div relatif tidak ada hubungannya dengan
z-index
div absolut atau tetap.EDIT
Ini adalah jawaban yang tidak lengkap.Jawaban ini memberikan informasi yang salah. Harap tinjau komentar dan contoh @ Dansingerman di bawah ini.sumber
karena
over
div Anda tidak memiliki penentuan posisi, z-index tidak tahu di mana dan bagaimana memposisikannya (dan berkenaan dengan apa?). Ubah saja posisi over div Anda menjadi relatif, sehingga tidak ada efek samping pada div itu dan kemudian div di bawah akan mematuhi kehendak Anda.di sini adalah contoh Anda di jsfiddle: Fiddle
sunting : Saya melihat seseorang telah menyebutkan jawaban ini!
sumber
Berikan yang
#under
negatifz-index
, mis-1
Ini terjadi karena
z-index
properti diabaikanposition: static;
, yang merupakan nilai default; jadi dalam kode CSS yang Anda tulis,z-index
adalah1
untuk kedua elemen tidak peduli seberapa tinggi Anda mengaturnya#over
.Dengan memberikan
#under
nilai negatif, itu akan berada di belakangz-index: 1;
elemen apa pun , yaitu#over
.sumber
Saya sedang membangun menu nav. Saya miliki
overflow: hidden
di css nav saya yang menyembunyikan segalanya. Saya pikir itu adalah masalah indeks-z, tetapi sebenarnya saya menyembunyikan segala sesuatu di luar nav saya.sumber
menurut bagian Overlapping Elements pada http://web.archive.org/web/20130501103219/http://w3schools.com/css/css_positioning.asp
sumber
perilaku elemen tetap (dan elemen absolut) sebagaimana didefinisikan dalam Spesifikasi CSS:
Ini membuat perhitungan zindex sedikit rumit, saya memecahkan masalah saya (situasi yang sama) dengan secara dinamis membuat wadah di elemen tubuh dan memindahkan semua elemen seperti itu (yang diklasifikasi sebagai "yang diperbaiki" di dalam elemen tingkat tubuh itu) )
sumber