2013-04-17 12 views
36

Supponiamo che io ho questo codice:Come rendere elemento secondario superiore di genitore con z-index

<div class="parent"> 
    <div class="child"> 
     Hello world 
    </div> 
</div> 

<div class="wholePage"></div> 

Questo jsFiddle: http://jsfiddle.net/ZjXMR/

Ora, ho bisogno di avere <div class="child"> sopra di <div class="wholePage"> ma nel jsFiddle puoi vedere che l'elemento figlio è stato reso prima dello <div class="wholePage">.

Se si rimuove la classe parentposition o z-index, tutto funziona correttamente. Questo è il comportamento corretto di cui ho bisogno: http://jsfiddle.net/ZjXMR/1/

Come posso farlo con z-index e senza rimuovere nulla dalla pagina?

risposta

34

Questo è impossibile in quanto il z-index di un bambino è impostato sullo stesso indice di stack del relativo genitore.

Hai già risolto il problema rimuovendo lo z-index dal genitore, mantienilo in questo modo o rendi l'elemento un fratello piuttosto che un figlio.

+0

Grazie Kyle, ma come ho detto prima, devo risolvere il problema senza rimuovere nulla. –

+6

'z-index' non è ereditato. – BoltClock

+0

@boltclock Viene preso dal genitore: http://jsfiddle.net/ykzEH/ – Kyle

8

Per ottenere ciò che si desidera senza rimuovere alcuno stile, è necessario rendere lo z-index della classe ".parent" più grande della classe ".wholePage".

.parent { 
    position: relative; 
    z-index: 4; /*matters since it's sibling to wholePage*/ 
} 

.child { 
    position: relative; 
    z-index:1; /*doesn't matter */ 
    background-color: white; 
    padding: 5px; 
} 

jsFiddle: http://jsfiddle.net/ZjXMR/2/

3

Lascia il genitore z-index: -1, o opacità: 0,99

+10

Se le persone si stanno chiedendo cosa sia l'opacità: 0,99 è tutto merito ti suggerisco di leggere questo link. http://philipwalton.com/articles/what-no-one-told-you-about-z-index/ – johnsnails

+0

Questo sembra non funzionare in IE 11 – Benedikt

0

Usa posizione non statica oltre a una maggiore z-index in elemento secondario:

.parent { 
    position: absolute 
    z-index: 100; 
} 

.child { 
    position: relative; 
    z-index: 101; 
} 
1

Niente è impossibile. Usa la forza.

.parent { 
    position: relative; 
} 

.child { 
    position: absolute; 
    top:0; 
    left: 0; 
    right: 0; 
    bottom: 0; 
    z-index: 100; 
} 
+3

Sebbene questo snippet di codice possa risolvere la domanda, [compresa una spiegazione] (http://meta.stackexchange.com/questions/114762/explaining-entely-code-based-answers) aiuta davvero a migliorare la qualità del tuo post. Ricorda che stai rispondendo alla domanda per i lettori in futuro, e queste persone potrebbero non conoscere le ragioni del tuo suggerimento sul codice. – gunr2171

0

Ho avuto lo stesso problema. Quello che ho fatto è stato aggiungere la posizione: relativo; e z-index: 1; div al bambino

.child-div { 
    position: relative; 
    z-index: 1; /*or greater*/ 
} 
Problemi correlati