2012-11-02 16 views
20

Non capisco perché, ma un'ombra di riquadro inserita è al di sotto del mio contenuto.Riquadro riquadro ombreggiato sotto il contenuto

Ecco un esempio:

div { 
    box-shadow:inset 0 0 10px black; 
    height:300px; 
    color:red; 
} 


​<div> 
    a 
</div>​ 

http://jsfiddle.net/MAckM/

Si vede il a è sulla parte superiore della scatola di ombra.

Come è possibile ottenere l'ombra della scatola in cima allo a?

+0

Ho già usato questa olizione funziona alla grande, ma la cosa più importante è lo z-index di questo div: prima. Non dimenticarti di usarlo quando hai problemi a coprire il contenuto completo. –

risposta

23

È necessario creare un nuovo elemento all'interno del div, con posizionamento e altezza e larghezza del 100% assoluti, quindi assegnare all'elemento l'ombra del riquadro.

HTML:

<div> 
    <div></div> 
    a 
</div>​ 

CSS:

div { 
    height:300px; 
    color:red; 
    position:relative; 
} 

div div { 
    box-shadow:inset 0 0 10px black; 
    position:absolute; 
    top:0; 
    left:0; 
    width:100%; 
    height:100%; 
}​ 

Ecco un JSFiddle.

Edit:

In alternativa, è possibile utilizzare un elemento pseudo:

HTML:

<div> 
    a 
</div>​ 

CSS:

div { 
    height:300px; 
    color:red; 
    position:relative; 
} 

div:before { 
    content:''; 
    display:block; 
    box-shadow:inset 0 0 10px black; 
    position:absolute; 
    top:0; 
    left:0; 
    width:100%; 
    height:100%; 
}​ 

JSFiddle.

+0

Nei browser moderni (incluso IE9 +), è possibile utilizzare il contenuto generato (': before',': after') al posto di un elemento reale. (IE8 supporta anche i contenuti generati, ma ha un bug che impedisce al contenuto generato di essere sopra il contenuto reale, e ovviamente non supporta lo stesso shadow box CSS.) –

+0

@MaratTanalin Assolutamente giusto. Ed è anche una soluzione molto più bella. Aggiornata la risposta. – fncombo

+0

O una risposta va bene per me, ma ho un problema. Quando ho un altro 'div' dentro il' div' centrale, l'elemento ombra o la pseudo classe si trova in cima al 'div' interno. Se aggiungo uno z-index al div interno, allora va sopra l'ombra della scatola. Prova a fare clic sul link in questa demo: http://jsfiddle.net/MAckM/5/ – henryaaron

Problemi correlati