Nilai minimum dan maksimum indeks-z?


518

Saya memiliki div di halaman HTML saya. Saya menunjukkan div ini berdasarkan pada beberapa kondisi, tetapi div tersebut ditampilkan di belakang elemen HTML di mana saya mengarahkan kursor mouse.

Saya telah mencoba semua nilai untuk z-index dari 0 - 999999. Adakah yang bisa memberitahu saya mengapa ini terjadi?

Apakah ada nilai minimum atau maksimum properti Z-INDEX dari CSS?

.divClass {
     position: absolute; 
     left: 25px; 
     top: 25px; 
     width: 320px;
     height: 300px; 
     z-index: 1000; 
}
<table cellspacing="0" cellpadding="0" width="100%">
  <tr>
    <td>
      <asp:HyperLink ID="lnkProgram" runat="server"></asp:HyperLink>
    </td>
  </tr>
  <tr>
     <td>
         <div class="divClass">
           Some Data
         </div>
     </td>
  </tr> 
</table>

Saya menunjukkan dan menyembunyikan div dengan .divClassonclick <asp:hyperlink>menggunakan jQuery.


Masalahnya mungkin tidak berkaitan dengan z-index secara khusus. Bisakah Anda memberikan beberapa contoh HTML dan CSS yang menggambarkan perilaku tersebut? Di browser apa Anda mengalami hal ini?
roryf

Hanya karena minat Anda dapat mencoba hal yang sama tanpa menggunakan tabel, hanya beberapa konten, tautan, dan div. Juga berikan warna latar belakang pada div hanya untuk memastikan saat Anda sedang berkembang.
roborourke

60
"mencoba semua nilai untuk properti Z-INDEX dari 0 - 999999". Saya merasa sulit untuk percaya.
sampathsris

4
@ Karaia Saya tidak, Dia bisa mencoba semua nilai z-index antara 0-999999 dengan JS ... Hanya sebuah pilihan ...
FullyHumanProgrammer

4
Tidak ada yang benar-benar menyebutkan display: nonedalam CSS-nya?
Mark Baijens

Jawaban:


386
┌──────────────────────┬───────────────────┬──────────────────────────────────┐
│ Browser              │ Max z─index value │ When exceeded, value changes to: │
╞══════════════════════╪═══════════════════╪══════════════════════════════════╡
│ Firefox 0 - 2        │ 2147483647        │ element disappears               │
├──────────────────────┼───────────────────┼──────────────────────────────────┤
│ Firefox 3            │ 2147483647        │ 0                                │
├──────────────────────┼───────────────────┼──────────────────────────────────┤
│ Firefox 4+           │ 2147483647        │ 2147483647                       │
├──────────────────────┼───────────────────┼──────────────────────────────────┤
│ Safari 0 - 3         │ 16777271          │ 16777271                         │
├──────────────────────┼───────────────────┼──────────────────────────────────┤
│ Safari 4+            │ 2147483647        │ 2147483647                       │
├──────────────────────┼───────────────────┼──────────────────────────────────┤
│ Internet Explorer 6+ │ 2147483647        │ 2147483647                       │
├──────────────────────┼───────────────────┼──────────────────────────────────┤
│ Chrome 29+           │ 2147483647        │ 2147483647                       │
├──────────────────────┼───────────────────┼──────────────────────────────────┤
│ Opera 9+             │ 2147483647        │ 2147483647                       │
└──────────────────────┴───────────────────┴──────────────────────────────────┘

4
Saya percaya maksudnya negatif.
Gavin

41
Bagaimana Anda menemukan ini?
2540625

Ada nomor untuk Safari / Chrome / Firefox seluler?
2540625

30
Bagi yang berminat 2,147,483,647 = 2^31 - 1,. Ini adalah prima Mersenne.
Reggie Pinkham

2
@BehnamMohammadi, Bagaimana seharusnya perilaku standar?
Pacerier

306

http://www.w3.org/TR/CSS21/visuren.html#z-index

'indeks-z'

Nilai : otomatis | <integer> | mewarisi

http://www.w3.org/TR/CSS21/syndata.html#numbers

Beberapa tipe nilai mungkin memiliki nilai integer (dilambangkan dengan <integer>) atau nilai-nilai bilangan real (dilambangkan dengan <nomor>). Bilangan dan bilangan real ditentukan hanya dalam notasi desimal. <integer> terdiri dari satu atau lebih digit "0" hingga "9". <number> dapat berupa <integer>, atau bisa nol atau lebih digit diikuti oleh titik (.) Diikuti oleh satu atau lebih digit. Bilangan bulat dan bilangan real dapat didahului oleh "-" atau "+" untuk menunjukkan tanda. -0 sama dengan 0 dan bukan angka negatif.

Perhatikan bahwa banyak properti yang memungkinkan bilangan bulat atau bilangan real sebagai nilai sebenarnya membatasi nilai untuk beberapa rentang, seringkali ke nilai non-negatif.

Jadi pada dasarnya tidak ada batasan untuk nilai indeks-z dalam standar CSS, tapi saya kira sebagian besar browser membatasi untuk menandatangani nilai 32-bit (−2147483648 hingga +2147483647) dalam praktiknya (64 akan sedikit di atas, dan itu tidak masuk akal untuk menggunakan sesuatu yang kurang dari 32 bit hari ini)


17
Penting untuk dicatat bahwa nilai indeks maksimum z pada Safari 3 adalah 16777271. Ini dinaikkan ke standar 32-bit di Safari 4 sehingga hanya menjadi masalah jika Anda menargetkan browser yang lebih lama. Juga, bahkan di Safari 3 apa pun di atas 16777271 akan ditutup pada saat itu, jadi kecuali jika Anda menggunakan nilai indeks-z yang sangat besar untuk memesan beberapa elemen, Anda tidak akan mengalami masalah (mis. Mengatur satu elemen ke nilai indeks-z 2147483647 akan memastikan bahwa elemen tetap berada di posisi teratas di browser apa pun, kecuali jika bersaing dengan elemen lain yang juga memiliki indeks-z> 16777271).
Doktor J

6
@ DoktorJ Adakah yang tahu mengapa ini 16777271? Tampaknya aneh bahwa itu lebih dari batas integer 24-bit unsigned.
Jools

2
@Jools menurut pengembang webkit Eric Seidel , itu adalah hasil dari menggunakan bitfield 24-bit -log base 2 (lg) = lg(16777271)
Janosch

2
@Janosch Maaf, saya tidak mengerti. lg (16777271) lebih besar dari 24. Saya akan berpikir bahwa bitfield 24-bit tidak cukup besar.
Jools

@Janosch, 2 ^ 24 = 16777216. 16777271dengan demikian akan membutuhkan 25 bit.
Pacerier

157

Tes saya menunjukkan bahwa itu z-index: 2147483647adalah nilai maksimum, diuji pada FF 3.0.1 untuk OS X. Saya menemukan bug integer overflow: jika Anda mengetik z-index: 2147483648(yaitu 2147483647 +1) elemen hanya berjalan di belakang semua elemen lainnya. Setidaknya peramban tidak mogok.

Dan pelajaran yang harus dipetik adalah Anda harus berhati-hati memasukkan nilai yang terlalu besar untuk z-indexproperti karena mereka membungkus.


57
Karena ini (2147483647) adalah nilai positif terbesar dari integer yang ditandatangani pada sistem operasi 32 bit ...
Badr Hari

4
Saya tidak berpikir angkanya akan membungkus jika nilainya lebih dari 2147483647 ... Saya pikir itu lebih mungkin bahwa browser hanya akan memperlakukan nomor apa pun di atas nilai ini sebagai nilai konstan, misalnya 0.
oliver-clare

3
Mungkin nilaimu menjadi negatif ... Misalnya -2147483647
Wahyu Fahmy

3
Di browser modern, lebih dari 2147483648 tidak memindahkan elemen di belakang elemen lain
Zach Saucier

25

Nilai minimum Z-index adalah 0 ; nilai maksimum tergantung pada jenis browser.

masukkan deskripsi gambar di sini


4
Sebenarnya, indeks-z dapat berupa angka negatif. Elemen yang diposisikan dengan z-indeks negatif dipesan terlebih dahulu dalam konteks penumpukan, sehingga akan muncul di belakang semua elemen lainnya. Juga lihat dokumentasi: w3.org/TR/CSS22/visuren.html#z-index
magikMaker

17
Mudah disalin & Tempel: 2147483647
candjack

Indeks-Z dapat berupa angka negatif, tetapi untuk Contoh Safari untuk iOS 11.0.2 memiliki masalah dengan properti ini.
kris_IV

Santosh, dari mana Anda mendapatkan angka-angka ini? Apakah Anda menyalin dari jawaban Behnam dan menambahkan IE7 dan IE8?
CPHPython



21

Dari pengalaman, saya pikir maksimum yang benar z-indexadalah 2147483638.


7
Sepertinya kamu salah. Menurut tes yang dilakukan pada tahun 2009 oleh Eric Poidokas, nilai maksimum indeks-z (tanpa risiko menjatuhkan elemen saat melimpah) adalah 2147483647.
Martin

14

Indeks-Z hanya berfungsi untuk elemen yang memiliki position: relative;atau position: absolute;menerapkannya. Jika bukan itu masalahnya, kita perlu melihat halaman contoh untuk lebih membantu.

EDIT: Dokter yang baik telah memberikan penjelasan sepenuhnya tetapi versi cepatnya adalah bahwa minimum adalah 0 karena itu tidak bisa menjadi angka negatif dan maksimum - yah, Anda tidak akan pernah benar-benar perlu pergi di atas 10 untuk sebagian besar desain.


5
Saya telah menggunakan "z-index: -1;" sebelum "menenggelamkan" suatu elemen sehingga tidak dapat diklik. Ini mungkin bukan solusi yang populer, tetapi berhasil. : P
Ty.

17
Saya tahu ini agak terlambat, tetapi bekerja dengan posisi: diperbaiki juga.
TCCV

7
AFAIK, Anda dapat memiliki bilangan bulat negatif untuk nilai indeks-z.
d -_- b

Saya heran mengapa saya menentukan indeks-z: 1000, tetapi browser memberi tahu saya bahwa indeks-z adalah otomatis. Posisi melakukan trik.
Will Wu

6

Saya telah menemukan bahwa sering jika indeks-z tidak berfungsi karena induk / saudara kandungnya tidak memiliki indeks-z yang ditentukan.

Jadi, jika Anda memiliki:

<div id="1">
    <a id="2" style="z-index:2"></a>
    <div id="3" style="z-index:1"></div>
    <button id="4"></button>
</div>

item # 3, atau bahkan # 4, mungkin memperebutkan # 2 untuk ruang klik / arahkan, meskipun jika Anda menetapkan # 1 ke z-indeks 0, saudara kandung yang z-index menempatkan mereka di tumpukan independen sekarang berada di tumpukan yang sama dan akan z-indeks dengan benar.

Ini memiliki deskripsi yang bermanfaat dan cukup manusiawi: http://foohack.com/2007/10/top-5-css-mistakes/  


4
Sementara kita berada di topik, masalah umum lainnya adalah tidak memiliki position: relative;atau sesuatu seperti itu.
Ryan Taylor

1
Sebenarnya, baca kembali postingan aslinya. Anda benar, ini mungkin masalahnya.
Ryan Taylor

5

Seorang pengguna di atas mengatakan "baik, Anda tidak akan pernah benar-benar perlu pergi di atas 10 untuk sebagian besar desain."

Bergantung pada proyek Anda, Anda hanya perlu z-indeks 0-1, atau z-indeks 0-10000. Anda sering harus bermain dalam angka yang lebih tinggi ... terutama jika Anda bekerja dengan pemirsa lightbox (9999 tampaknya menjadi standar dan jika Anda ingin melampaui indeks-z mereka, Anda harus melebihi itu!)


0

Meskipun INT_MAXmungkin merupakan taruhan yang paling aman, WebKit tampaknya menggunakan ganda secara internal dan dengan demikian memungkinkan angka yang sangat besar (dengan presisi tertentu).LLONG_MAXmis. berfungsi dengan baik (setidaknya dalam 64-Bit Chromium dan WebkitGTK), tetapi akan dibulatkan menjadi 9223372036854776000.

(Meskipun Anda harus mempertimbangkan dengan hati-hati apakah Anda benar- benar membutuhkan banyak indeks z ini ...).

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.