2012-07-23 17 views
5

Ho due div che hanno ombre esterne e sono sullo stesso z-index.Due div con ombreggiatura sullo stesso livello

Attualmente stanno entrambi proiettando un'ombra l'una sull'altra.

Vorrei che entrambi proiettassero ombre sullo sfondo ma NON l'una sull'altra. Come faccio a fare questo?

+1

postare alcuni markup qui –

+0

utilizzare un colore di sfondo? – Christoph

+0

http://jsfiddle.net/mrchimp/5WQc8/ - Come potete vedere il div superiore è leggermente rosso. –

risposta

8

Non è possibile avere due elementi diversi con lo stesso livello di impilamento. Gli elementi hanno sempre diversi livelli di impilamento. Ecco perché il tuo secondo elemento ombreggia il primo elemento. (Senza z-index, l'apparenza nel DOM determina il livello di impilamento)

Z-index funziona solo su elementi posizionati non statici (relativi, assoluti), quindi non sarà di alcun aiuto.

IMO non è possibile ottenere l'effetto desiderato senza alcuni piccoli css-hacking (dichiarare una posizione non statica sugli elementi combinata con un elemento wrapper aggiuntivo - non dichiarare z-index sul genitore ma solo sugli elementi del bambino).

Example

Ma non esitate a correggermi se sbaglio.

+0

Ho pensato che potesse essere il caso. Per ora ho intenzione di eliminare l'ombra su uno dei div. Non ideale ma abbastanza buono per ora! Grazie per la risposta. –

+0

@Mr_Chimp guarda il mio esempio e vediamo se questo si adatta alle tue esigenze. – Christoph

+0

Ho fatto, è una buona soluzione, ma lascerò aperta la domanda per ora solo per vedere se qualcuno ha un altro approccio. Come ho detto, per il momento ho evitato il problema in quanto non è un grosso problema, ma sono interessato a vedere come la gente se ne andrebbe. Grazie ancora. –

3

Usa questo semplice trucco CSS, crea solo uno pseudoelemento , imposta il suo z-index più basso di div e dona un'ombra. Il codice seguente rilascia ombre non sovrapposte sotto ogni div. Esempio di lavoro allo http://jsfiddle.net/on38a8pz/1/.

div { 
    position: relative; 
} 

div:after { 
    content: ''; 
    position: absolute; 
    top: 0; 
    left: 0; 
    width: 100%; 
    height: 100%; 
    box-shadow: 0 0 30px black; 
    z-index: -1; 
} 
Problemi correlati