Precedentemente, credevo che un elemento figlio non potesse essere z-indexato su un elemento che è un fratello del suo elemento genitore che ha un indice z più alto del suo genitore. Ad esempio, le divisioni A e B sono fratelli. Div A
ha un z-index di 10, e div B
ha un z-index 5. Div B
ha un elemento secondario: Div C
, con z-index 9999. Dalla mia comprensione, sarà div C
non essere posizionata sopra div A
, perché L'indice div C
(div B
) ha uno z-index inferiore a div A
. Ciò è vero, a meno che lo div B
non abbia un indice z di "auto". Quando div B
ha un indice z di 'auto', che sarebbe '0', dal momento che eredita dal corpo, div C
posizioni oltre div A
, anche se div B's z-index è in realtà LOWER di quanto non fosse quando non era t lavorando.Bambini di z-index: 'auto' vs z-index: 0, e qual è il "contesto di impilamento" in CSS?
Dalla specifiche CSS2, z-index 'auto' è definito come
Il livello di strato del riquadrato generato nel contesto di stratificazione corrente è 0. La scatola non stabilisce un nuovo contesto di stratificazione meno che non sia l'elemento radice.
Sto avendo difficoltà a capire "accatastamento contesto." Sembra essere l'unica differenza tra un z-index definito di 0, e un valore predefinito di 'auto', che è pari a 0, ma anche non ha alcun contesto di stratificazione . Più precisamente:
Perché i figli di elementi senza contenuto di stack z-indexing differiscono da quelli all'interno di un contesto di stacking?
Ecco un violino che mostra la differenza tra z-index di 0 e un indice z di auto. Il div verde è un figlio del div blu, e il div rosso è un fratello del div blu.
Una risposta più breve potrebbe essere: è necessario un ordine di stack predefinito per gestire qualsiasi elemento non posizionato nella pagina che non ha uno z-index impostato in modo esplicito. –