Creare sfumature crossbrowser con i CSS

La definizione di sfumature attraverso i css  offre una valida alternativa all’utilizzo di immagini, riducendo così tempi di caricamento. Nonostante questa tecnica non sia totalmente crossbrowser ricopre i browser maggiormente utilizzati in un numero considerevole di versioni portando così un ampio numero di utenti a risparmiare tempo e banda ad ogni richiesta per le pagine web.

La creazione di sfumature attraverso i css è un tipo di immagine generata, non una proprietà. Questo significa che possono essere utilizzate all’interno di altre proprietà come avviene per rgb() o rgba().

Nei CSS3 esistono due metodi per la definizione di sfumature, in particolare uno per le sfumature lineari (linear-gradient) e uno per le sfumature radiali (radial-gradient). Da questi sono ricavati i rispettivi per firefox, google chrome e safari con uguali sintassi ma differente premessa.

Qui un esempio delle soluzioni proposte, di seguito la spiegazione nel dettaglio.

Sfumature lineari

La sintassi della sfumatura lineare richiede un minimo di tre parametri:

  • posizione iniziale (valore numerico, percentuale o gradi)
  • colore iniziale (colore in valore esadecimale, rgb o rgba)
  • colore finale (colore in valore esadecimale, rgb o rgba)
-webkit-linear-gradient(top, #ccc, #000);
-moz-linear-gradient(top, #ccc, #000);
linear-gradient(top, #ccc, #000);

E’ possibile aggiungere più colori ad una singola sfumatura definendo la porzione occupata dal colore attraverso un valore in percentuale tra 0% e 100%. Per i colori per cui non viene specificata una percentuale la larghezza della sfumatura viene definita in automatico.

-webkit-linear-gradient(top, #ccc 20%, #000);
 -moz-linear-gradient(top, #ccc 20%, #000);
 linear-gradient(top, #ccc 20%, #000);

E’ inoltre possibile definire sfumature con più colori aggiungendoli nell’ordine desiderato

-webkit-linear-gradient(top, #ccc 20%, #000, #c00);
 -moz-linear-gradient(top, #ccc 20%, #000, #c00);
 linear-gradient(top, #ccc 20%, #000, #c00);

Ampliare il supporto per google chrome e webkit

Oltre alla definizione di sfumature con i CSS3 è possibile utilizzare webkit-gradient per ampliare il supporto a safari 4 e superiori e google chrome inferiori alla 10.

La sintassi della sfumatura lineare per webkit richiede un minimo di cinque parametri:

  • tipo di sfumature (linear o radial)
  • posizione iniziale (valore numerico, percentuale o gradi)
  • posizione finale (valore numerico, percentuale o gradi)
  • colore iniziale (colore in valore esadecimale)
  • colore finale (colore in valore esadecimale)
-webkit-gradient(linear, left top, right top, from(#ccc), to(#000));

Si sconsiglia di definire i colori in rgb o rgba considerato che la dichiarazione serve per ampliare il supporto su browser meno recenti che potrebbero non supportare i colori in rgb essendo parte dei CSS3.

E’ possibile aggiungere più colori ad una singola sfumatura definendo la porzione occupata dal colore attraverso un valore in percentuale tra 0% e 100%. Per i colori per cui non viene specificata una percentuale la larghezza della sfumatura viene definita in automatico.

-webkit-gradient(linear, left top, right top, from(40%, #ccc), to(#000));

E’ inoltre possibile definire sfumature con più colori aggiungendoli attraverso la dichiarazone color-stop.

-webkit-gradient(linear, left top, left bottom, from(#ccc), to(#000),
color-stop(40%, #c00))

Sfumature lineari su Internet explorer

Le soluzioni viste fino ad ora non trovano supporto su Internet Explorer in versioni precedenti alla 9, bisogna quindi ricorrere al gradient filter.

Questo filtro per Internet Explorer permette sfumature lineari verticali ed orizzontali di due colori.

Per questo filtro sono necessari tre parametri:

  • gradienttype (definisce una sfumatura verticale (0) o orizzontale (1))
  • colore iniziale (in valore esadecimale)
  • colore finale (in valore esadecimale)
filter: progid:DXImageTransform.Microsoft.gradient(GradientType = 0,
startColorstr='#cccccc', endColorstr='#000000');

Per ampliare il supporto a più versioni di Internet Explorer occorre ricordare la diversa definizione di filters:

//per ie 5.5 e successivi
filter: progid:DXImageTransform.Microsoft.filtername(sProperties)
//per ie 8
-ms-filter: 'progid:DXImageTransform.Microsoft.filtername(sProperties)'

In questo modo è possibile creare sfumature con i css compatibili con Firefox 3.6+, Safari 4+, google chrome e internet explorer 7+. Purtroppo opera non offre un supporto per le sfumature da css e ricade nella soluzione di callback con la definizione di un colore o di un’immagine di sfondo.

Sfumature Radiali

E’ inoltre possibile definire sfumature radiali attraverso radial-gradient, le derivate per webkit e mozilla -webkit-radial-gradient e -moz-radial-gradient e la definizione webkit-gradient (con tipologia radial).

Per questa soluzione con i css3 può essere utile inserire un parametro di definizione sulla larghezza delle sfumature che definisce forma ed estensione.

I valori definibili sono:
Circle (per sfumature circolari)
Ellipse (per sfumature ad ellisse)

In aggiunta si possono definire ulteriori parametri per il comportamento della sfumatura:

closest-side (sfumatura al lato più vicino)
farthest-side (sfumatura al lato più distante)
closest-corner (sfumatura all’angolo più vicino)
farthest-corner (sfumatura all’angolo più lontano)

Qui un esempio delle soluzioni descritte.

Per maggiori informazioni sull’utilizzo delle sfumature ecco alcuni link:

sfumature con CSS3 in firefox (https://developer.mozilla.org/en/Using_gradients)
sfumature con CSS3 in webkit (http://www.webkit.org/blog/1424/css3-gradients)
sfumature con webkit-gradient (http://www.webkit.org/blog/175/introducing-css-gradients)
sfumature con filter per internet explorer (http://msdn.microsoft.com/en-us/library/ms532997%28v=vs.85%29.aspx)
definizioni della posizione della sfumatura (https://developer.mozilla.org/en/CSS/-moz-radial-gradient#Size_constants)
utilizzo di filters in Internet explorer (http://msdn.microsoft.com/en-us/library/ms532847%28v=vs.85%29.aspx)

La definizione di sfumature attraverso i css permette di offrire una valida alternativa all’utilizzo di immagini, permettendo così tempi di caricamento più brevi. Benchè questa tecnica non possa essere totalmente crossbrowser ricopre i browser maggiormente utilizzati in un numero considerevole di versioni portando così un ampio numero di utenti a risparmiare tempo e banda ad ogni richiesta per le pagine web.

La creazione di sfumature attraverso i css è un tipo di immagine generata, non una proprietà, possono quindi essere utilizzate all’interno di altre proprietà come avviene per rgb() o rgba().

Nei CSS3 esistono due metodi per la definizione di sfumature, in particolare una per le sfumature lineari (linear-gradient) e una per le sfumature radiali (radial-gradient). Da queste due versioni sono ricavati i rispettivi per firefox, google chrome e safari con uguali sintassi ma differente premessa.

Sfumature lineari

La sintassi della sfumatura lineare richiede un minimo di tre parametri:

  • posizione iniziale (valore numerico, percentuale o gradi)
  • colore iniziale (colore in valore esadecimale, rgb o rgba)
  • colore finale (colore in valore esadecimale, rgb o rgba)
-webkit-linear-gradient(top, #ccc, #000);
-moz-linear-gradient(top, #ccc, #000);
linear-gradient(top, #ccc, #000);

E’ possibile aggiungere più colori ad una singola sfumatura definendo la porzione occupata dal colore attraverso un valore in percentuale tra 0% e 100%. Per i colori per cui non viene specificata una percentuale la larghezza della sfumatura viene definita in automatico.

-webkit-linear-gradient(top, #ccc 20%, #000);
 -moz-linear-gradient(top, #ccc 20%, #000);
 linear-gradient(top, #ccc 20%, #000);

E’ inoltre possibile definire sfumature con più colori aggiungendoli nell’ordine desiderato

-webkit-linear-gradient(top, #ccc 20%, #000, #c00);
 -moz-linear-gradient(top, #ccc 20%, #000, #c00);
 linear-gradient(top, #ccc 20%, #000, #c00);

Ampliare il supporto per google chrome e webkit

Oltre alla definizione di sfumature con i CSS3 è possibile utilizzare webkit-gradient per ampliare il supporto a safari 4 e superiori e google chrome inferiori alla 10.

La sintassi della sfumatura lineare per webkit richiede un minimo di cinque parametri:

  • tipo di sfumature (linear o radial)
  • posizione iniziale (valore numerico, percentuale o gradi)
  • posizione finale (valore numerico, percentuale o gradi)
  • colore iniziale (colore in valore esadecimale)
  • colore finale (colore in valore esadecimale)
-webkit-gradient(linear, left top, right top, from(#ccc), to(#000));

Si sconsiglia di definire i colori in rgb o rgba considerato che la dichiarazione serve per ampliare il supporto su browser meno recenti che potrebbero non supportare i colori in rgb essendo parte dei CSS3.

E’ possibile aggiungere più colori ad una singola sfumatura definendo la porzione occupata dal colore attraverso un valore in percentuale tra 0% e 100%. Per i colori per cui non viene specificata una percentuale la larghezza della sfumatura viene definita in automatico.

-webkit-gradient(linear, left top, right top, from(40%, #ccc), to(#000));

E’ inoltre possibile definire sfumature con più colori aggiungendoli attraverso la dichiarazone color-stop.

-webkit-gradient(linear, left top, left bottom, from(#ccc), to(#000),
color-stop(40%, #c00))

Sfumature lineari su Internet explorer

Le soluzioni viste fino ad ora non trovano supporto su Internet Explorer in versioni precendenti alla 9, bisogna quindi ricorrere al gradient filter.

Questo filtro per Internet Explorer permette sfumature lineari verticali ed orizzontali di due colori.

Per questo filtro sono necessari tre parametri:

  • gradienttype (definisce una sfumatura verticale (0) o orizzontale (1))
  • colore iniziale (in valore esadecimale)
  • colore finale (in valore esadecimale)
filter: progid:DXImageTransform.Microsoft.gradient(GradientType = 0,
startColorstr='#cccccc', endColorstr='#000000');

Per ampliare il supporto a più versioni di Internet Explorer occorre ricordare la diversa definizione di filters:

//per ie 5.5 e successivi
filter: progid:DXImageTransform.Microsoft.filtername(sProperties)
//per ie 8
-ms-filter: 'progid:DXImageTransform.Microsoft.filtername(sProperties)'

In questo modo è possibile creare sfumature con i css compatibili con Firefox 3.6+, Safari 4+, google chrome e internet explorer 7+. Purtroppo opera non offre un supporto per le sfumature da css e ricade nella soluzione di callback con la definizione di un colore o di un’immagine di sfondo.

Sfumature Radiali

E’ inoltre possibile definire sfumature radiali attraverso la proprietà radial-gradient, le derivate per webkit e mozilla -webkit-radial-gradient e -moz-radial-gradient e la definizione webkit-gradient (con tipologia radial).

Per questa soluzione con i css3 può essere utile inserire un parametro di definizione sulla larghezza delle sfumature che definisce forma ed estensione.

I valori definibili sono:
Circle (per sfumature cricolari)
Ellipse (per sfumature ad ellisse)

In aggiunta si possono definire ulteriori parametri per il comportamento della sfumatura:

closest-side (sfumatura al lato più vicino)
farthest-side (sfumatura al lato più distante)
closest-corner (sfumatura all’angolo più vicino)
farthest-corner (sfumatura all’angolo più lontano)

Per maggiori informazioni sull’utilizzo delle sfumature ecco alcuni link:

sfumature con CSS3 in firefox (https://developer.mozilla.org/en/Using_gradients)
sfumature con CSS3 in webkit (http://www.webkit.org/blog/1424/css3-gradients)
sfumature con webkit-gradient (http://www.webkit.org/blog/175/introducing-css-gradients)
sfumature con filter per internet explorer (http://msdn.microsoft.com/en-us/library/ms532997%28v=vs.85%29.aspx)
definizioni della posizione della sfumatura (https://developer.mozilla.org/en/CSS/-moz-radial-gradient#Size_constants)
utilizzo di filters in Internet explorer (http://msdn.microsoft.com/en-us/library/ms532847%28v=vs.85%29.aspx)

Info su Mauro Accornero

Sviluppatore e Web Designer Freelance, lavora a Milano dove collabora con Agenzie di Comunicazione ed Aziende del settore. Docente presso la Nuova Accademia di Belle Arti a Milano dove tiene corsi in ambito web per il dipartimento di Graphic Design e Art Direction.
Questa voce è stata pubblicata in Tutorial e contrassegnata con , , . Contrassegna il permalink.

Lascia un Commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati *

*

È possibile utilizzare questi tag ed attributi XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>