Valore minimo e massimo di z-index?


518

Ho un div nella mia pagina HTML. Sto mostrando questo div in base a qualche condizione, ma il div viene visualizzato dietro l'elemento HTML in cui ho puntato il cursore del mouse.

Ho provato tutti i valori per z-index da 0 a 999999. Qualcuno può dirmi perché questo sta accadendo?

Esiste un valore minimo o massimo della proprietà Z-INDEX dei 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>

Sto mostrando e nascondendo il div con .divClassonclick tramite l' <asp:hyperlink>utilizzo di jQuery.


Probabilmente il problema non riguarda specificamente z-index. Puoi dare qualche esempio HTML e CSS che illustra il comportamento? In quali browser stai vivendo questo?
— Roryf,

Solo per interesse potresti provare la stessa cosa senza usare la tabella, solo un po 'di contenuto, il link e il div. Metti anche un colore di sfondo sul div solo per essere certo mentre stai sviluppando.
— Roborourke,

60
"provato tutti i valori per la proprietà Z-INDEX da 0 a 999999". Lo trovo difficile da credere.
— sampathsris,

4
@Krumia Non lo so, potrebbe provare tutti i valori dell'indice z tra 0-999999 con JS ... Solo un'opzione ...
— FullyHumanProgrammer,

4
Nessuno ha effettivamente menzionato il display: nonenel suo CSS?
— Mark Baijens,

Risposte:


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
Credo che significhi negativo.
— Gavin,

42
Come ti sei imbattuto in questi?
— 2540625,

Qualche numero per Safari / Chrome / Firefox mobile?
— 2540625,

30
Per gli interessati 2,147,483,647 = 2^31 - 1,. È un numero primo di Mersenne.
— Reggie Pinkham,

2
@BehnamMohammadi, Quale dovrebbe essere il comportamento standard?
— Pacerier,

307

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

'Z-index'

Valore : auto | <intero> | ereditare

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

Alcuni tipi di valore possono avere valori interi (indicati con <intero>) o valori numerici reali (indicati con <numero>). Numeri e numeri reali sono specificati solo in notazione decimale. Un <intero> è composto da una o più cifre da "0" a "9". Un <numero> può essere <intero> oppure può essere zero o più cifre seguite da un punto (.) Seguito da una o più cifre. Sia i numeri interi che i numeri reali possono essere preceduti da un "-" o "+" per indicare il segno. -0 equivale a 0 e non è un numero negativo.

Si noti che molte proprietà che consentono un numero intero o reale come valore limitano effettivamente il valore a un intervallo, spesso a un valore non negativo.

Quindi sostanzialmente non ci sono limiti per il valore z-index nello standard CSS, ma immagino che la maggior parte dei browser lo limiti ai valori con segno a 32 bit (da -2147483648 a +2147483647) in pratica (64 sarebbe un po 'in alto, e non ha senso usare qualcosa di meno di 32 bit in questi giorni)


17
È importante notare che il valore massimo dell'indice z su Safari 3 era 16777271. Questo è stato elevato allo standard a 32 bit in Safari 4, quindi è solo una preoccupazione se si sta prendendo di mira i browser più vecchi. Inoltre, anche in Safari 3 qualsiasi cosa al di sopra di 16777271 viene limitata a ciò, quindi a meno che tu non stia usando valori z-index assurdamente grandi per ordinare più elementi, non dovresti avere problemi (cioè impostare un elemento su un valore z-index di 2147483647 assicurerà che l'elemento rimanga ai vertici in qualsiasi browser, a meno che non sia in concorrenza con un altro elemento che ha anche un indice z> 16777271).
— Doktor J,

6
@DoktorJ Qualcuno sa perché è 16777271? Sembra strano che sia 56 in più rispetto al limite di un intero senza segno a 24 bit.
— Jools,

2
@Jools secondo Eric Seidel , sviluppatore del webkit , è stato il risultato dell'uso di un bitfield a 24 bit -log base 2 (lg) = lg(16777271)
— Janosch,

2
@Janosch Siamo spiacenti, non capisco. LG (16777271) è maggiore di 24. Avrei pensato che un bitfield a 24 bit non fosse abbastanza grande.
— Jools

@Janosch, 2 ^ 24 = 16777216. 16777271richiederà quindi 25 bit.
— Pacerier,

157

I miei test mostrano che z-index: 2147483647è il valore massimo, testato su FF 3.0.1 per OS X. Ho scoperto un bug di overflow di numeri interi: se si digita z-index: 2147483648(che è 2147483647 + 1) l'elemento va dietro tutti gli altri elementi. Almeno il browser non si arresta in modo anomalo.

E la lezione da imparare è che dovresti stare attento a inserire valori troppo grandi per la z-indexproprietà perché si avvolgono.


57
Perché questo (2147483647) è il più grande valore positivo di un numero intero con segno su un sistema operativo a 32 bit ...
— Badr Hari

4
Non credo che il numero andrà a finire se il valore è superiore a 2147483647 ... Penso che sia più probabile che i browser considerino qualsiasi numero su questo valore come un valore costante, ad es. 0.
— oliver-clare

3
Forse il tuo valore è appena diventato negativo ... Ad esempio -2147483647
— Wahyu Fahmy il

3
Nei browser moderni andare oltre 2147483648 non sposta gli elementi dietro altri elementi
— Zach Saucier,

25

Il valore minimo di Z-index è 0 ; il valore massimo dipende dal tipo di browser.

inserisci qui la descrizione dell'immagine


4
In realtà, z-index può essere un numero negativo. Gli elementi posizionati con indici z negativi vengono ordinati per primi in un contesto di sovrapposizione, quindi verranno visualizzati dietro tutti gli altri elementi. Vedi anche i documenti: w3.org/TR/CSS22/visuren.html#z-index
— magikMaker

17
Facile da copiare e incollare: 2147483647
— candlejack

L'indice Z può essere un numero negativo, ma per esempio Safari per iOS 11.0.2 ha un problema con questa proprietà.
— kris_IV

Santosh, dove hai preso questi numeri? Hai copiato dalla risposta di Behnam e hai aggiunto IE7 e IE8?
— CPHPython,

21

Dipende dal browser (sebbene l'ultima versione di tutti i browser dovrebbe raggiungere il massimo a 2147483638), così come la reazione del browser quando viene superato il massimo.

http://www.puidokas.com/max-z-index/



21

Per esperienza, penso che il massimo corretto z-indexsia 2147483638.


7
Sembra che tu abbia torto. Secondo i test effettuati nel 2009 da Eric Poidokas, il valore massimo dell'indice z (senza rischio di caduta di elementi in caso di overflow) è 2147483647.
— Martin

14

Z-Index funziona solo per elementi che hanno position: relative;o position: absolute;applicati a loro. Se questo non è il problema, dovremo vedere una pagina di esempio per essere più utili.

EDIT: Il buon dottore ha già fornito la spiegazione più completa, ma la versione rapida è che il minimo è 0 perché non può essere un numero negativo e il massimo - beh, non dovrai mai andare oltre i 10 per la maggior parte dei progetti.


5
Ho usato "z-index: -1;" prima di "affondare" un elemento in modo che non possa essere cliccato. Probabilmente non è una soluzione popolare, ma funziona. : P
— Ty.

17
So che è un po 'tardi, ma funziona anche con la posizione: risolto.
— TCCV,

7
AFAIK, puoi avere numeri interi negativi per il valore dell'indice z.
— d -_- b

Mi chiedo perché specifichi z-index: 1000, ma il browser mi ha detto che z-index attuale è auto. posizione fa il trucco.
— Will Wu

6

Ho scoperto che spesso se z-index non funziona perché i suoi genitori / fratelli non hanno uno z-index specificato.

Quindi se hai:

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

l'articolo # 3, o anche il numero 4, potrebbe essere in conflitto # 2 per lo spazio clic / hover, anche se impostando # 1 su z-index 0, i fratelli che con z-index li mettono in stack indipendenti ora sono nello stesso stack e indicizzerà z correttamente.

Questa ha una descrizione utile e abbastanza umanizzata: http://foohack.com/2007/10/top-5-css-mistakes/  


4
Mentre siamo sull'argomento, un altro problema comune non sta avendo position: relative;o qualcosa del genere.
— Ryan Taylor,

1
In realtà, rileggi il post originale. Hai ragione, questo è probabilmente il suo problema.
— Ryan Taylor,

5

Un utente sopra dice "beh, non avrai mai davvero bisogno di andare oltre i 10 per la maggior parte dei disegni".

A seconda del progetto, potrebbero essere necessari solo gli indici z 0-1 o gli indici z 0-10000. Avrai spesso bisogno di giocare con le cifre più alte ... specialmente se stai lavorando con i visualizzatori di lightbox (9999 sembra essere lo standard e se vuoi superare il loro indice z, dovrai superarlo!)


0

Sebbene INT_MAXsia probabilmente la scommessa più sicura, WebKit apparentemente usa i doppi internamente e quindi consente numeri molto grandi (con una certa precisione). LLONG_MAXad es. funziona bene (almeno in 64-bit Chromium e WebkitGTK), ma verrà arrotondato a 9223372036854776000.

(Anche se dovresti considerare attentamente se davvero, hai davvero bisogno di così tanti indici z ...).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.