2010-03-23 14 views
15

Ho bisogno che un determinato elemento dinamico appaia sempre sopra un altro elemento, indipendentemente dall'ordine in cui si trovano nell'albero DOM. È possibile? Ho provato z-index (con position: relative) e non sembra funzionare. Odio essere vago, ma questo è il modo più semplice in cui posso pensare di porre questa domanda senza spiegare il suo scopo, fino alla nausea.HTML: ottieni un elemento figlio da mostrare dietro (indice z inferiore) rispetto al suo genitore?

Quindi, per ricapitolare, ho bisogno:

<div class="a"> 
    <div class="b"></div> 
</div> 

<div class="b"> 
    <div class="a"></div> 
</div> 

Per visualizzare esattamente la stessa cosa quando reso. E per motivi di flessibilità (sto pensando di distribuire un plug-in che ha bisogno di questa funzionalità), mi piacerebbe davvero non dover ricorrere al posizionamento assoluto o fisso.

Addendum: Per quel che vale, per svolgere la funzione mi mancava, mi ha fatto una dichiarazione condizionale in cui l'elemento figlio sovrapposizione sarebbe diventato trasparente nel caso si stava bloccando la vista del suo genitore. Non è perfetto, ma è qualcosa.

+2

Questo non è possibile. – SLaks

+0

Grazie per la testa alzata. Mi hai salvato un sacco di capelli. – dclowd9901

+0

Questo è possibile - presupponendo che il livello di annidamento sia solo di 1 livello (come nell'esempio). Funzionerà: '.a> .b, .b> .a {z-index: -1; posizione: relativa} '. Se hai bisogno di un violino, commenta, ma penso che sia abbastanza esplicativo. –

risposta

16

Se gli elementi fanno una gerarchia, esso non può essere fatto in questo modo, perché ogni elemento posizionato crea nuovo stacking context e indice z è relativo agli elementi dello stesso contesto di stratificazione.

+0

Ho praticamente pensato che fosse così, ma non presumo di sapere tutto. In ogni caso, grazie a tutti. – dclowd9901

+0

http://jsfiddle.net/6xC88/ –

0

quello che ti serve è position: absolute in modo che z-index funzioni.

inoltre sarà necessario impostare le proprietà left e top per posizionare l'elemento nella posizione corretta. Probabilmente avrai bisogno di farlo con javascript.

+5

z-index funziona per elementi posizionati (= relativi, assoluti, fissi), cioè non statici. – jholster

+0

O posizione: fissa; '^ _^ – EvgenyKolyakov

4

Ho avuto successo utilizzando quanto segue.

z-index: -1;

+0

Questo non risponde alla domanda che viene posta –

+2

In suvated, questo non merita un downvote. Questo _partially_ risponde alla domanda che viene posta - sarebbe meglio se dimostrasse con un violino. –

0

Ho trovato un modo per mettere effettivamente l'elemento figlio dietro il suo elemento creando uno pseudo-elemento che imita il genitore. Utile per cose come menu a discesa - spero che aiuti, utente di otto anni fa!

https://jsfiddle.net/x7up68s2/7/

.container > div { 

    // will be beyond its child 
    background-color: red; 
    width: 150px; 
    height: 50px; 
    z-index: 10; 

    // will be above its "child" 
    &:before { 
    content: ''; 
    display: block; 
    position: absolute; 
    height: 100%; 
    width: 100%; 
    background-color: red; 
    z-index: 7; 
    top: 10px; 
    } 
} 

.a > .b, 
.b > .a { 
    z-index: 5; 
    position: absolute; 
    width: 100%; 
    height: 100%; 
    background-color: teal; 
} 
Problemi correlati