Z endeksinin minimum ve maksimum değeri?


518

HTML sayfamda bir div var. Bu div bazı koşullara göre gösteriyorum, ama div fare imlecini işaret nerede HTML öğesinin arkasında görüntüleniyor.

0 - 999999 arası z-endeksi için tüm değerleri denedim. Herkes bunun neden olduğunu söyleyebilir misiniz?

CSS'nin Z-INDEX özelliğinin minimum veya maksimum değeri var mı?

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

.divClassGösteren ve <asp:hyperlink>kullanarak jQuery kullanarak onclick ile div gizleme .


Sorun muhtemelen özellikle z-endeksi ile ilgili değildir. Davranışı gösteren bazı HTML ve CSS örnekleri verebilir misiniz? Bunu hangi tarayıcılarda yaşıyorsunuz?
099

Sadece ilginizi çekmeden tabloyu, sadece bazı içeriği, bağlantıyı ve div'ı kullanmadan aynı şeyi deneyebilirsiniz. Ayrıca, geliştirme sırasında div'den bir arka plan rengi koyun.
09:50

60
msgstr "Z-INDEX özelliği için tüm değer 0 - 999999'dan denendi". Buna inanmakta zorlanıyorum.
sampathsris

4
@Krumia Yapmıyorum, JS ile 0-999999 arasındaki tüm z-endeksi değerlerini deneyebilir ... Sadece bir seçenek ...
FullyHumanProgrammer

4
Kimse display: noneonun CSS'sinde gerçekten bahsetmedi mi?
Mark Baijens

Yanıtlar:


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
Bence negatif demek.
Gavin

41
Bunları nasıl buldunuz?
2540625

Mobil Safari / Chrome / Firefox için herhangi bir sayı var mı?
2540625

30
İlgilenenler için 2,147,483,647 = 2^31 - 1,. Bir Mersenne üssü.
Reggie Pinkham

2
@BehnamMohammadi, Standart davranış ne olmalı?
Pacerier

306

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

'Z-endeksi'

Değer : otomatik | <tamsayı> | kalıt

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

Bazı değer türlerinde tamsayı değerleri (<tamsayı> ile gösterilir) veya gerçek sayı değerleri (<sayı> ile gösterilir) olabilir. Gerçek sayılar ve tamsayılar yalnızca ondalık gösterimle belirtilir. Bir <sayı>, "0" ila "9" arasındaki bir veya daha fazla basamaktan oluşur. Bir <sayı> bir <sayı> olabilir veya sıfır veya daha fazla basamak, ardından bir nokta (.) Ve ardından bir veya daha fazla basamak olabilir. Hem tamsayılardan hem de gerçek sayılardan önce işareti göstermek için "-" veya "+" işareti gelebilir. -0, 0'a eşittir ve negatif bir sayı değildir.

Bir tamsayı veya gerçek sayının değer olarak kullanılmasına izin veren birçok özelliğin değeri aslında bir aralıkla, genellikle negatif olmayan bir değerle sınırladığını unutmayın.

Bu yüzden temelde CSS standardında z-endeksi değeri için herhangi bir sınırlama yoktur, ancak çoğu tarayıcı bunu pratikte imzalı 32 bit değerlerle (−2147483648 ila +2147483647) sınırlandırır (64 en üstte olabilir ve 64) Bugünlerde 32 bit'ten az bir şey kullanmak mantıklı değil)


17
Safari 3'teki maksimum z-endeksi değerinin 16777271 olduğunu belirtmek önemlidir. Bu, Safari 4'teki 32 bit standardına yükseltildiğinden, yalnızca eski tarayıcıları hedefliyorsanız bu bir endişe kaynağıdır. Ayrıca, Safari 3'te bile 16777271'in üzerindeki herhangi bir şey bununla sınırlıdır, bu nedenle birden fazla öğe sipariş etmek için saçma büyük z-endeksi değerleri kullanmadığınız sürece bir sorun yaşamamalısınız (yani bir öğeyi z-endeksi 2147483647'ye ayarlamak z-endeksi> 16777271 olan başka bir öğeyle rekabet etmedikçe, öğenin herhangi bir tarayıcıda en üstte kalmasını sağlar).
Doktor J

6
@DoktorJ Neden 16777271 olduğunu bilen var mı? 24 bit işaretsiz bir tamsayının sınırından 56 daha fazla olduğu garip görünüyor.
Jools

2
@ Webkit dev Eric Seidel göreJools , bu bir 24 bit bitfield kullanmanın sonucuydu -log base 2 (lg) = lg(16777271)
Janosch

2
@ Janosch Üzgünüm, anlamıyorum. lg (16777271) 24'ten büyük. 24 bit bit alanının yeterince büyük olmadığını düşünürdüm.
Jools

@ Janosch, 2 ^ 24 = 16777216. 16777271böylece 25 bit gerekir.
Pacerier

157

Testlerim z-index: 2147483647, OS X için FF 3.0.1'de test edilen maksimum değer olduğunu gösteriyor . Bir tamsayı taşması hatası keşfettim:z-index: 2147483648 (2147483647 + 1) , öğe diğer tüm öğelerin arkasına gider. En azından tarayıcı çökmez.

Ve öğrenilecek ders, z-indexetrafa sarıldıkları için mülk için çok büyük değerler girmekten kaçınmanız gerektiğidir .


57
Çünkü bu (2147483647) 32 bit işletim sistemlerinde işaretli bir tam sayının en büyük pozitif değeri ...
Badr Hari

4
Değer 2147483647'nin üzerindeyse sayının etrafta sarılacağını sanmıyorum ... Tarayıcıların bu değerin üzerindeki herhangi bir sayıyı sabit bir değer olarak ele alması daha olasıdır, örneğin.
oliver-clare

3
Belki de değeriniz daha da olumsuz hale gelir ... Örneğin -2147483647
Wahyu Fahmy

3
Modern tarayıcılarda 2147483648'in üzerinden geçen öğeler diğer öğelerin arkasına
taşınmaz

25

Minimum değeri Z indeksi olan 0 ; maksimum değer tarayıcı türüne bağlıdır.

resim açıklamasını buraya girin


4
Aslında, z-endeksi negatif bir sayı olabilir. Negatif z-endeksleri olan konumlandırılmış öğeler ilk olarak bir yığın bağlamında sıralanır, böylece diğer tüm öğelerin arkasında görünürler. Ayrıca dokümanlara da bakın: w3.org/TR/CSS22/visuren.html#z-index
magikMaker

17
Kopyalama ve Yapıştırma
Kolaylığı

Z-endeksi negatif bir sayı olabilir, ancak iOS 11.0.2 için Safari için bu özellikte bir sorun var.
kris_IV

Santosh, bu numaraları nereden buldun? Behnam'ın cevabından kopyalayıp IE7 ve IE8'i eklediniz mi?
CPHPython



21

Deneyim dışında, doğru maksimumun z-index2147483638 olduğunu düşünüyorum .


7
Yanılıyormuşsun gibi görünüyor. Eric Poidokas tarafından 2009 yılında yapılan testlere göre, maksimum z-endeksi değeri (taşma sırasında elemanları düşürme riski olmadan) 2147483647'dir.
Martin

14

Z-Index yalnızca kendilerine sahip olan position: relative;veya position: absolute;bunlara uygulanan öğeler için çalışır. Sorun bu değilse, daha yararlı olması için bir örnek sayfa görmeliyiz.

DÜZENLEME: İyi doktor zaten tam açıklamayı koydu, ancak hızlı sürüm, minimum 0 olması çünkü negatif bir sayı ve maksimum olamaz - pek çok tasarım için asla 10'un üzerine çıkmanıza gerek kalmayacak.


5
"Z-index: -1;" kullandım önce bir öğeyi "batırmak" için tıklanamaz. Muhtemelen popüler bir çözüm değil, ama işe yarıyor. : P
Ty.

17
Bunun biraz geç olduğunu biliyorum, ama pozisyonla çalışıyor: sabit.
TCCV

7
AFAIK, z-endeksi değeri için negatif tamsayılara sahip olabilirsiniz.
d -_- b

Neden z-endeksi: 1000 belirttiğimi merak ediyorum, ama tarayıcı bana gerçek z-endeksinin otomatik olduğunu söyledi. pozisyon hile yapar.
Wu

6

Z-endeksi, üst / kardeşleri belirli bir z-endeksi olmadığı için çalışmazsa sık sık buldum.

Eğer varsa:

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

madde # 3, hatta # 4, tıklama / fareyle üzerine gelme alanı için # 2'ye itiraz ediyor olabilir, ancak # 1'i z-endeksi 0'a ayarlarsanız, z-endeksi olan bağımsız yığınlara yerleştiren kardeşler şimdi aynı yığın içindedir ve z-endeksini düzgün bir şekilde endeksleyecektir.

Bu yararlı ve oldukça insancıllaştırılmış bir açıklamaya sahiptir: http://foohack.com/2007/10/top-5-css-mistakes/  


4
Biz konuyla ilgilenirken, başka bir yaygın sorun position: relative;da böyle bir şey değil.
Ryan Taylor

1
Aslında, orijinal yayını tekrar okuyunuz. Haklısın, bu muhtemelen onun sorunu.
Ryan Taylor

5

Yukarıdaki bir kullanıcı "pek çok tasarım için asla 10'un üzerine çıkmanıza gerek kalmayacak" diyor.

Projenize bağlı olarak, sadece 0-1 z dizinlerine veya 0-10000 z dizinlerine ihtiyacınız olabilir. Sıklıkla daha yüksek rakamlarda oynamanız gerekir ... özellikle ışık kutusu izleyicileriyle çalışıyorsanız (9999 standart gibi görünüyor ve z-endeksini doldurmak istiyorsanız bunu aşmanız gerekecek!)


0

INT_MAXMuhtemelen en güvenli bahis olsa da, WebKit görünüşte dahili olarak iki katına çıkıyor ve bu nedenle çok büyük sayılara (belirli bir hassasiyetle) izin veriyor . LLONG_MAXörneğin iyi çalışır (en az 64 Bit Chromium ve WebkitGTK'da), ancak 9223372036854776000 olarak yuvarlanır.

(Gerçekten, gerçekten bu kadar çok z endeksine ihtiyacınız olup olmadığını dikkatle düşünmelisiniz ...).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.