2015-03-26 12 views
6

Quindi, il mio sito Web ha un'intestazione e un div contenente Revolution Slider immediatamente dopo. Sto cercando di aggiungere un'ombra di casella sotto l'intestazione e sopra il cursore. Ma non funziona, a meno che non aggiungo anche margin-bottom all'intestazione - ma ciò rende l'intero esercizio discutibile.CSS box-shadow viene visualizzato solo con il margine

Questo è il codice:

#header { 
 
    display:block; 
 
    min-height: 99px; 
 
    background: #FFFFFF; 
 
    border-top: 3px solid #8dddcd; 
 
    border-bottom: 1px solid #ecf0f1; 
 
    line-height: 99px; 
 
    box-shadow: 0 10px 10px 10px rgba(0,0,0,0.3); 
 
} 
 
#rev { 
 
    position: relative; 
 
}
<div id="header"></div> 
 
<div id="rev">the slider</div>

Qualcuno potrebbe aiutarmi a capire che cosa sta causando questo?

+0

possibile duplicato di [Css box-shadow parte del modello box dell'elemento?] (Http://stackoverflow.com/questions/7036498/is-css-box-shadow-part-of-elements-box-model) – KyleMit

risposta

2

In realtà, la questione si rivelò essere correlato a z-index proprietà dei diversi div. Con alcuni ritocchi sono riuscito a risolvere tutto senza utilizzare alcun margine.

In ogni caso, grazie a tutti per il vostro tempo e il vostro aiuto!

1

Quando si utilizza la modalità di rendering predefinita per box-shadow (ombra esterna), è necessario aggiungere un margine in quella direzione (10px sull'asse y nell'esempio) in modo che il contenuto della casella in overflow sia visibile. Se si desidera visualizzare l'ombra della casella all'interno dell'intestazione, è sufficiente aggiungere la parola chiave inset alla dichiarazione.

6

Vedi le seguenti domande:

Secondo il box-shadow spec:

Un esterno box-shadow getta un'ombra come se il border- la scatola dell'elemento era opaca. L'ombra è disegnato al di fuori del limite del bordo solo

Quindi, se non si vuole sovrapposizione, dovrete aggiungere il margine youself

#header { 
 
    box-shadow: 5px 5px 5px 5px rgba(0,0,0,0.3); 
 
    margin-bottom: 10px; 
 
} 
 
#slider { 
 
    position: relative; 
 
}
<div id="header">Header</div> 
 
<div id="slider">Slider</div>

+0

Grazie, KyleMit! Il problema è che una volta impostato il div slider su 'display: none', l'ombra appare senza la necessità di aggiungere alcun margine. Quale proprietà del cursore potrebbe ostacolare l'ombra dell'intestazione, qualche idea? – zkvvoob

+0

@zkvvoob, non sono sicuro di aver capito il tuo problema. Puoi aggiornare la tua domanda con uno screenshot di ciò che sta realmente accadendo e che cosa ti piacerebbe accadere. Se era solo che non avevi bisogno del 'margin-bottom' quando il cursore era impostato su' display: none', puoi invece aggiungere un 'margin-top' al cursore. – KyleMit

+0

Sono riuscito a capirlo. Guarda la mia risposta in fondo. Ci scusiamo per i problemi! – zkvvoob

2

Se avete bisogno come si dice l'ombra della casella sotto l'intestazione solo e sopra il cursore è possibile utilizzare meno l'ultimo numero nella casella shadow come il seguente:

box-shadow: 0 10px 10px -10px rgba(0,0,0,0.3); 

Questo farà apparire l'ombra della scatola solo nella parte inferiore.

esempio di lavoro:

#header { 
 
    display:block; 
 
    min-height: 99px; 
 
    background: #FFFFFF; 
 
    border-top: 3px solid #8dddcd; 
 
    border-bottom: 1px solid #ecf0f1; 
 
    line-height: 99px; 
 
    box-shadow: 0 10px 10px -10px rgba(0,0,0,0.3); 
 
} 
 
#rev { 
 
    position: relative; 
 
}
<div id="header"></div> 
 
<div id="rev">the slider</div>

Problemi correlati