Voglio avere un'ombra di casella su tre lati di un div (eccetto il lato superiore). Come potrei farlo?CSS box-shadow su tre lati di un div?
risposta
Ecco un JS Fiddle per te, utilizza solo un singolo div per funzionare.
#shadowBox {
background-color: #ddd;
margin: 0px auto;
padding: 10px;
width: 220px;
box-shadow: 0px 8px 10px gray,
-10px 8px 15px gray, 10px 8px 15px gray;
}
Si imposta un'ombra in basso, in basso a sinistra e in basso a destra. Con le ombre morbide diventa un po 'complicato ma è fattibile. Ha solo bisogno di un po 'di congetture per ridurre il raggio di sfocatura dell'ombra centrale, in modo che appaia senza cuciture e non troppo scuro quando si sovrappone alle ombre laterali.
non è possibile ottenere lo stesso effetto semplicemente regolando la posizione y di 1 ombra casella? – Vigrond
@Vigrond L'ho provato, non rende la sfumatura dell'ombra troppo lontana dai lati. È necessario aggiungere due ombre d'angolo per rendere i lati più uniformi. –
Non penso che questa sia la risposta giusta, questo sembra accatastare tre ombre di scatole separate l'una sull'altra, rendendo ogni lato molto più scuro del previsto. Non c'è un modo per aggiungere una singola ombra a ciascun lato o un'ombra che copra tutti e tre? – jenlampton
Ecco un esempio del valore negativo Y suggerito da @Vigrond
box-shadow: 0px -8px 10px 0px rgba(0,0,0,0.15);
Se si dispone di un colore di sfondo solido, allora si può ottenere questo risultato utilizzando una combinazione di background-color
e z-index
. Il trucco è dare l'elemento con box-shadow
e il suo precedente posizionamento fratello, quindi dare al fratello precedente un colore di sfondo e impostarlo per avere un valore più alto z-index
in modo che sia impilato sopra l'elemento con box-shadow
, in effetti coprendo la sua ombra superiore.
Potete vedere una demo qui: http://codepen.io/thdoan/pen/vNvpKv
Se non c'è immediato fratello precedente con cui lavorare, allora si può anche usare uno pseudo-elemento come :before
o :after
: http://codepen.io/thdoan/pen/ojJEMj
Se siete alla ricerca per qualcosa come Google ombre materiale di design:
.shadow1 {
box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24);
}
.shadow2 {
box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23);
}
.shadow3 {
box-shadow: 0 10px 20px rgba(0,0,0,0.19), 0 6px 6px rgba(0,0,0,0.23);
}
.shadow4 {
box-shadow: 0 14px 28px rgba(0,0,0,0.25), 0 10px 10px rgba(0,0,0,0.22);
}
.shadow5 {
box-shadow: 0 19px 38px rgba(0,0,0,0.30), 0 15px 12px rgba(0,0,0,0.22);
}
Fonte: https://medium.com/@Florian/freebie-google-material-design-shadow-helper-2a0501295a2d#.wyvbmcq10
Per ombre traslucide con angoli difficili (ad es. nessun raggio di sfocatura) Ho usato questo:
.shadow-no-top {
position: relative;
box-shadow: -5px 0 0 0 rgba(0,0,0,.2), 5px 0 0 0 rgba(0,0,0,.2);
}
.shadow-no-top:before {
content: "";
position: absolute;
top: 100%;
left: -5px;
right: -5px;
bottom: -5px;
background-color: rgba(0,0,0,.2);
}
Questo utilizza un'ombra per le parti sinistra e destra e aggiunge: dopo il contenuto pseudo come l'ombra inferiore. Ciò evita sovrapposizioni che rendono l'ombra più scura o angoli mancanti.
Tuttavia, ciò richiede che lo sfondo dell'elemento sia solido.
- 1. Bordo CSS su tre lati
- 2. Bordo su tre lati
- 3. Tre div in fila CSS
- 4. CSS, visualizzazione in linea e tre div
- 5. Aggiunta di un bagliore su 3 lati usando i CSS
- 6. CSS: tre colonne problema layout
- 7. Come centrare tre div orizzontalmente in un div genitore?
- 8. BoxShadow: inserto sul tag img
- 9. css opacity su hover di div
- 10. CSS angoli arrotondati div
- 11. Piegare un div con CSS
- 12. Floating un DIV su un altro DIV
- 13. CSS selezione di un div dopo un div con un div
- 14. Centro un div in CSS
- 15. css bene di div
- 16. CSS - Testo opaco su div bassa opacità?
- 17. CSS - Fai un div "cliccabile"
- 18. Come posizionare tre div in html orizzontalmente?
- 19. align div nel fondo di un altro div usando css
- 20. DIV all'interno di un altro DIV all'interno di un altro DIV con i CSS
- 21. obliqua Borders su una Div
- 22. CSS background-color non ha alcun effetto su un DIV
- 23. css box shadow su un contenitore div interrotto
- 24. Centro allineare un div orizzontalmente usando Twitter Bootstrap predefinito CSS
- 25. CSS scatola di ombra su un div viene nascosta da altre div
- 26. div centro dinamicamente su un altro div
- 27. ombre div css triangolari
- 28. Sovrascrivere i css per un div specifico?
- 29. CSS div angoli arrotondati
- 30. Come posso impostare un bordo css su un solo lato?
Sembra essere un duplicato di http://stackoverflow.com/questions/1429605/creating-a-css3-box-shadow-on-all-sides-but-one – jcuenod
È un dupe, ma questo ha un risposta migliore secondo me. Possono essere uniti? –