2013-04-17 8 views
36

Angenommen, ich habe diesen Code:Wie Kind-Element machen oberen als Elternteil mit z-index

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

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

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

Nun, ich brauche oberhalb von <div class="wholePage"> haben <div class="child"> in aber in der jsFiddle können Sie sehen, dass das untergeordnete Element vor <div class="wholePage"> gerendert wird.

Wenn Sie die parent Klasse position oder z-index entfernen, funktioniert alles gut. Dies ist das richtige Verhalten, das ich brauche: http://jsfiddle.net/ZjXMR/1/

Wie kann ich das mit z-index und ohne etwas von Seite zu entfernen?

Antwort

34

Dies ist unmöglich, da ein Kind z-index auf den gleichen Stapelindex wie seine Eltern eingestellt ist.

Sie haben das Problem bereits gelöst, indem Sie den Z-Index vom übergeordneten Element entfernen, es so beibehalten oder das Element zu einem Geschwister anstelle eines untergeordneten Elements machen.

+0

Danke Kyle, aber wie ich bereits erwähnt habe, muss ich das Problem lösen, ohne etwas zu entfernen. –

+6

'z-index' wird nicht vererbt. – BoltClock

+0

@boltclock Es stammt aus dem Eltern: http://jsfiddle.net/ykzEH/ – Kyle

8

Um zu erreichen, was Sie wollen, ohne Stile zu entfernen, müssen Sie den Z-Index der '.parent' Klasse größer als die '.wholePage' Klasse machen.

.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

Geben Sie die Mutter z-index: -1 oder Opazität: 0,99

+10

Wenn sich die Leute wundern, was die Opazität: 0,99 ist, empfehle ich Ihnen, diesen Link zu lesen. http://philipwalton.com/articles/what-no-one-told-you-about-z-index/ – johnsnails

+0

Dies scheint nicht in IE zu funktionieren 11 – Benedikt

0

Verwendung nicht-statische Position zusammen mit größerem z-Index in Geordnetes Elemente:

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

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

Nichts ist unmöglich. Benutze die Kraft.

.parent { 
    position: relative; 
} 

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

Während dieses Code-Snippet die Frage lösen kann, [einschließlich einer Erklärung] (http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) hilft wirklich, die Qualität Ihrer Post zu verbessern. Denken Sie daran, dass Sie die Frage für Leser in der Zukunft beantworten, und diese Leute könnten die Gründe für Ihren Codevorschlag nicht kennen. – gunr2171

0

Ich hatte das gleiche Problem. Was ich tat, war einfach Position hinzufügen: relativ; und Z-Index: 1; zum Kind div.

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