Sei qui: Homepage » css, web design » Ombre cross-browser con i CSS, senza immagini
nov 13 2009
La proprietà box-shadow (CSS3) permette di applicare ombre ad elementi contenitori di tipo block. Funziona in maniera simile alla proprietà text-shadow, ma il W3C al momento ne ha sospeso l’approfondimento per studiarne l’implementazione in maniera più approfondita.
La proprietà può essere utilizzata su Firefox 3.5 e sui browser basati su webkit (Safari e Chrome) con i soliti prefissi:
L’espressione è semplicemente:
box-shadow: 5px 5px 10px #000;
dove i parametri sono nell’ordine:
Ho notato che tra i browser webkit la resa è migliore su Safari: Chrome pur visualizzando l’ombra ha qualche problema con gli angoli ed il loro arrotondamento.
La cosa interessante, scoperta per caso sul blog di Nick Dunn, è che con alcuni hack è già possibile sfruttare questa proprietà per ottenere un risultato valido anche su Internet Explorer.
Esistono infatti alcuni filtri proprietari della Microsoft che in queste circostanze sono l’unica soluzione possibile. Era già successo per i .png trasparenti su IE6, e la situazione è analoga anche in questo caso. Combinando i filtri Glow e Shadow, o ancora meglio utilizzando solamente Shadow è possibile ottenere un’ombra molto simile su tutte le versioni di Explorer, a partire dalla 5.5.
Il codice necessario è il seguente, da inserire in un commento condizionale:
filter:
progid:DXImageTransform.Microsoft.Shadow(color=#eeeeee,direction=0,strength=7)
progid:DXImageTransform.Microsoft.Shadow(color=#dddddd,direction=90,strength=10)
progid:DXImageTransform.Microsoft.Shadow(color=#dddddd,direction=180,strength=10)
progid:DXImageTransform.Microsoft.Shadow(color=#eeeeee,direction=270,strength=7);
Color e strenght dell’ombra possono ovviamente essere modificati secondo le necessità.

Ho realizzato una pagina dimostrativa di questo effetto.
Il risultato cambierà leggermente a seconda del browser utilizzato, ma resterà comunque coerente. La soluzione non è esente da difetti, ma è un buon compromesso per aggiungere dettagli in più ad un design senza appesantirlo con delle immagini. C’è anche da considerare che spesso è complicato dare un’ombra ad un contenitore, soprattutto se questo ha delle dimensioni variabili: l’unica soluzione è utilizzare del codice html superfluo o adottare questo metodo.
I difetti principali che ho riscontrato sono:
A voi la scelta se adottare questa soluzione: è una possibilità da tenere in considerazione, ma la sua efficacia è da valutare a seconda del progetto. Niente vieta comunque di adottare anche solo la soluzione per Firefox come progressive enhancement, offrendo un’esperienza migliore di navigazione ad alcuni utenti.
Hai trovato interessante questo post? Puoi leggere anche i seguenti articoli:
Classificato in css, web design.
TomStardust.com è realizzato secondo i canoni dell'accessibilità, le normative del W3C, e la legge Stanca, pur non essendo il sito di una pubblica amministrazione e non avendo nessun obbligo a riguardo.
Poter navigare su internet ed accedere alle informazioni sulla rete è un diritto di tutti, realizzare siti che rispondano agli standard web dovrebbe essere un dovere di ogni sviluppatore.
Questo sito e tutti i suoi contenuti, compresi i temi Wordpress, sono pubblicati sotto licenza Creative Commons 2.5.
Questo sito non rappresenta una testata giornalistica e viene aggiornato senza alcuna periodicità.
Powered by Wordpress
13 novembre 2009 alle 09:56
LucaAnche se è un po “sperimentale” è molto bello l’effetto che si ha.
Concordo per i principali difetti che hai elencato.
ciao
14 novembre 2009 alle 02:29
Marco Pedota - Studio grafico ArtistikoIl CSS3 è molto intrigante, e credo che sperimentarlo, anche in anticipo, sia giusto. Alla fine bisogna solo tenere presente che il sito ed i contenuti devono essere comunque totalmente accessibili e usufruibili anche senza il supporto al CSS3. Questo “premia” chi ha browser aggiornati, e comuqnue non penalizza chi ha browser che ancora non supportano CSS3.
Purtroppo Opera, nonostante sia a mio avviso forse il miglior browser (anche se usato circa dal 2% dell’utenza), non supporta CSS3 (nemmeno l’amatissimo border-radius).
21 novembre 2009 alle 19:07
Luca Colli…. interessante … ma proprio non ce lo caviamo di dosso questo maledetto IE ????? :-)
24 novembre 2009 alle 23:52
Valentinosto utilizzando queste proprietà CSS su un progetto in fase di sviluppo
il problema però che ho dovuto affrontare è che non è possibile definire l’opacità dell’ombra, mentre nei design è abbastanza comune.
la proprietà “strength” ne definisce in realtà l’ampiezza.
la soluzione per mozilla e webkit c’è, ed è semplice: basta usare un’altra nuova caratteristica CSS, i colori rgba.
purtroppo IE non supporta i colori rgba, e non sono riuscito a trovare nessun’altro trick valido
sto pensando però di utilizzare un plugin per jQuery (box-shadow, per l’appunto) e di cambiare l’opacità.
25 novembre 2009 alle 14:10
Andrea LetiTempo fa su blographik scrissi un’articolo che parlava delle ombre al testo.
Le ombre ai box sono eccezzionali!
Grazie Tommaso! Sei sempre un Grande!
30 novembre 2009 alle 01:48
macottimo! grazie ;)
2 dicembre 2009 alle 06:22
graziano@Luca Colli: penso proprio di no.
3 ottobre 2011 alle 23:03
marcdavvero molto interessante soprattutto il trick per Ie, complimenti gli altri articoli che ho letto sull’argomento non lo avevano.
C’e’ una soluzione per Opera, se ci fosse io lo userei da subito.
ciao e buon lavoro!