Transizione con i CSS3

CSS3
Negli ultimi anni le pagine web si sono riempite di effetti di transizione sugli oggetti realizzati con l’ausilio di Javascript. Mi riferisco ad effetti come il cambiamento del colore di sfondo di un contenitore al passaggio del mouse come quello che possiamo vedere in questo esempio.

La nuova specifica dei CSS (http://www.w3.org/TR/css3-transitions/) include un modulo, chiamato CSS Transitions,  che ci consente di realizzare questi effetti utilizzando solo il foglio di stile, senza aver bisogno di script esterni.

Il modulo consente di modificare i valori di proprietà CSS specificando la durata dell’effetto di transizione.

Normalmente, quando il valore di una proprietà CSS cambia, il risultato viene renderizzato istantaneamente e l’elemento a cui è assegnata tale proprietà viene aggiornato immediatamente. Un “rudimentale” esempio di transizione che abbiamo utilizzato finora è il seguente:

1
2
3
4
5
6
7
8
div {
width: 200px;
height: 200px;
background-color: 98d925#;
}
div:hover {
background-color: #ff5c00;
}

Vediamo dunque all’opera il secondo esempio, passando il mouse sul div colorato.

Utilizzando le transizioni, invece, è possibile assegnare una durata (espressa in secondi) per il passaggio dal vecchio valore al nuovo.

Possiamo applicare un semplice effetto di transizione di 2 secondi all’esempio precedente aggiungendo queste due semplici righe di codice CSS:

1
2
3
4
5
6
7
8
9
10
11
div {
width: 200px;
height: 200px;
background-color: 98d925#;
transition-property: background-color;
transition-duration: 2s;
}
div:hover {
background-color: #ff5c00;
}

Le due proprietà attivano il cambiamento del colore di sfondo dal colore di partenza (contenuto nella prima regola) al colore finale (contenuto nella regola con l’hover).

La transizione dell’esempio è evidenziata in Figura 1:

Figura 1 – Transizione background-color

Transizione background-color

Supporto dei browser

Un esempio pratico dell’effetto di transizione non è stato dato in precedenza perchè bisogna prima fare una precisazione sul supporto attuale dei browser per questo modulo.

Le transizioni, nella loro definizione standard prevista dalla specifica, non sono supportate nativamente da nessun browser. Ognuno però, Internet Explorer escluso, fornisce la sua alternativa proprietaria che consente di incominciare ad utilizzare tali proprietà.

Le versioni minime dei browser necessarie per sfruttarle sono le seguenti:

  • Firefox 3.7 (disponibile in versione alpha)
  • Google Chrome 4.0+
  • Safari 3.1+
  • Opera 10.5+

Possiamo ora riprendere l’esempio con la transizione e adattarlo ad ogni browser. Il codice CSS diviene, quindi, il seguente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
div {
width: 200px;
height: 200px;
background-color: 98d925#;
transition-property: background-color; /*standard*/
transition-duration: 2s;
-webkit-transition-property: background-color; /*safari*/
-webkit-transition-duration: 2s;
-o-transition-property: background-color; /*opera*/
-o-transition-duration: 2s;
-moz-transition-property: background-color; /*firefox*/
-moz-transition-duration: 2s;
}
div:hover {
background-color: #ff5c00;
}

Vediamo a questo punto il terzo esempio.

Le proprietà

Per effettuare gli effetti di transizione, la specifica del CSS3 include quattro proprietà:

  • transition-property
  • transition-duration
  • transition-timing-function
  • transition-delay

Vediamo nel dettaglio le funzionalità di ogni proprietà fornendo qualche esempio del loro utilizzo.

Transition-property

transition-property definisce le proprietà a cui verrà assegnata la transizione.

L’elenco delle proprietà a cui è possibile assegnare un’animazione è possibile visualizzarlo nella sezione apposita della specifica, raggiungibile a questo link.

Se tale proprietà è utilizzata senza transition-duration, la transizione avrà effetto immediato. Quindi l’effetto sarebbe lo stesso che si ha senza usarla.

Transition-duration

transition-duration definisce la durata della transizione, ovvero il tempo che la transizione impiegherà per passare dallo stato iniziale a quello finale e viceversa. Il valore è espresso in secondi e di default è settata a 0.

Con le due proprietà viste finora si possono già realizzare effetti davvero molto carini. Riprendiamo a questo punto il primo esempio, quello in cui realizzavamo un effetto di transizione utilizzando Javascript. Vogliamo realizzare lo stesso effetto utilizzando adesso solo codice CSS. Nell’esempio partivamo da un quadrato di dimensione 100×100 e, al verificarsi dell’evento hover, il box assumeva una larghezza pari al 70% della pagina, aumentava il margine da sinistra, la dimensione del bordo e l’opacità.

L’effetto è del tutto identico ed è stato realizzato utilizzando semplicemente le due proprietà viste finora. Ecco il quarto esempio, realizzato solo con i CSS.

Transition-delay

transition-delay permette di ritardare l’esecuzione della transizione del numero di secondi passati come parametro.

Riprendiamo l’esempio 3 e aggiungiamo un ritardo di 2 secondi all’inizio della transizione. Il codice da aggiungere è il seguente:

1
2
3
4
5
6
7
8
div {
...
transition-delay: 2s;
-webkit-transition-delay: 2s;
-o-transition-delay: 2s;
-moz-transition-delay: 2s;
}

Il nuovo esempio (esempio 5) è disponibile a questo indirizzo.

Transition-timing-function

transition-timing-function descrive come i valori intermedi usati durante la transizione vengono calcolati. Anzich&ecute; utilizzare una ripartizione lineare del tempo è possibile utilizzare delle funzioni che cambiano velocità durante la transizione. Tali effetti vengono identificati con il termine easing e sono basati sulla Curva di Bèzier.

Le funzioni a disposizione sono le seguenti:

  • ease;
  • linear;
  • ease-in;
  • ease-out;
  • ease-in-out;
  • cubic-bezier con cui è possibile realizzare tutte le funzioni precedenti e realizzare funzioni personalizzate.

Vediamo un semplicissimo esempio del funzionamento di tali funzioni. Realizziamo una transizione sulla dimensione in larghezza di un div. Il codice necessario è il seguente:

1
2
3
4
5
6
7
8
div {
...
transition-timing-function: ease;
-webkit-transition-timing-function: ease;
-o-transition-timing-function: ease;
-moz-transition-timing-function: ease;
}

Il risultato è visualizzabile nell’esempio 6.

Le funzioni di transizione messe a confronto possiamo vederle nell’esempio 7.

Combinare le transizioni

Abbiamo visto finora che è possibile assegnare la transizione a più proprietà contemporaneamente ma, tutte terminavano entro lo stesso tempo. È possibile, invece, assegnare una durata e/o un valore di ritardo ad ogni singola proprietà indipendente dalle altre. Vediamo un esempio per capire come:

1
2
3
4
5
div {
transition-property: background-color, width, height;
transition-duration: 5s, 10s, 2s;
transition-delay: 0s, 0s, 4s;
}

Dal codice precedente abbiamo visto che è sufficiente separare con una virgola i valori di durata e ritardo per assegnarli alla proprietà corrispondente.

L’effetto è visualizzabile nell’esempio 8.

fonte html.it

Pubblicato in css | Contrassegnato | 3 commenti

Cosa significa WEB 2.0

Il termine WEB 2.0 è ormai di uso comune, ma non tutti ne colgono il vero significato, fino a qualche hanno fà io e i miei amici-colleghi sviluppavamo siti web usando layout  basati su tabelle, e con controlli esclusivamente lato server, mentre nel frattempo un timido javascript si affacciava con una certa diffidenza, nel mondo dei webmaster.

Da allora il web si è evoluto, basta vedere un semplice form di registrazione che in tempo reale ci mostra  se il nostro nick-name o e-mail  sono già presenti nel database  del sito, oppure ci fa sapere il grado di sicurezza della nostra password. Il fatto di non essere più costretti a inviare tutti i dati da un form con  conseguente caricamento dell’intera pagina ha permesso di rendere le procedure di registrazione sicuramente più snelle e accativanti,  anche grazie all’implementazione della tecnica AJAX, ovvero un metodo che permette con javascript e l’oggetto xmlhttp(ormai presente in tutti i browser),  di inviare dei dati ad uno script lato server(php per esempio), senza dover ricaricare tutta la pagina da capo,   risparmiando una notevole quantità di banda, dato che i dati che vengono inviati, sono solo quelli che necessitano di un controllo. Certo il momento di mandare in pensione il sistema tradizionale non è ancora arrivato ma di certo, esistono già applicazioni che ne  fanno largo uso, basti pensare al celebre e talvolta abusato social network Facebook.

Il massiccio impiego  di questi metodi ha reso necessario lo sviluppo di sistemi più agevoli per scrivere eventi con javascript; nascono cosi framework come Jquery(ormai alla versione 1.4) che permette con poche righe di codice di fare chiamate ajax o di cambiare con un click intere regole css.

Come eccenato ad inizio articolo, i siti WEB in passato venivano spesso sviluppati basando l’intero layout sulle tabelle, fino a quando il W3C non diede le sue direttive, e cosi  i webmaster conobbero un TAG allungo dimenticato chiamato DIV, questo elemento  ha complicato la vita a molti sviluppatori ormai cosi affezionati alla praticità delle tabelle, ma per forza di cosa tutti costretti ad allinearsi ai nuovi standard web (bhe non proprio tutti…), La questione nasce da un puro concetto di semantica in quanto lo scopo per il quale le tabelle furono concepite, era quello d’ incasellare dati puramente tabellarri del tipo varibile-valore, mentre il div doveva essere usato per “suddividere” i vari elementi del layout.

Le innovazioni non mancano e non mancheranno,  il css 3 e gli eventi javascrit sono ormai una realtà, il vero problema sta nel fatto che non tutti i browser vanno di pari passo con queste innovazioni, basti pensare a Internet Explorer che ormai giunto alla versione 8 non supporta regole come angoli arrotondati e position fixed, senza contare le attivazioni degli eventi javascript che spesso vengono interpretate in modo nettamente  differente da Firefox o Google crome.

Mi auguro che questa lettura sia d’aiuto a tutti coloro che vogliano comprendere il WEB di oggi e di domani. Gli argomenti che abbiamo introdotto verranno appronfonditi in future pubblicazioni.

Pubblicato in Trinacria news | Lascia un commento

Progettare su Android con PHP

PHP for Android (PFA) progetto che ha recentemente acquisito una certa trazione, uno sforzo per rendere lo sviluppo di PHP sulla piattaforma possibile e facile.

Irontec è la società che sta dietro al progetto e il loro obiettivo è di rendere lo sviluppo PHP in Android non solo possibile ma anche realizzabile fornendo strumenti e documentazione. Sul sito dedicato al progetto ci sono informazioni e link per scaricare e installare il software necessario e uno screencast su come iniziare a creare un’applicazione di test.

Potete trovare maggiori informazioni sul progetto (e su come potere parteciparvi) su phpforandroid.net.

Pubblicato in Programmazione | Contrassegnato | 1 commento

Perchè trinacria

logo trinacriaLa trinacria, ovvero il simbolo che rappresenta le tre punte della sicilia, è divenuto anche il nostro motto personale, le nostre tre punte sono: la passione per il nostro lavoro, la continua ricerca di nuove tecnologie WEB 2.0 e il rapporto professionale con il cliente.

Pubblicato in Trinacria news | Lascia un commento

Buone nuove da trinacriaweb.

Stiamo preparando la nuova grafica per il blog e stiamo aggiungendo nuove modifiche a trinacriaweb.it rimanete con noi!

Pubblicato in Trinacria news | Lascia un commento

Benvenuti su Trinacria WEB

Oggi viene inaugurato il nostro blog, Presto cambieremo grafica e inizieremo ad inserire articoli utili e interessanti. Un saluto dal team di Trinacria WEB.

Pubblicato in Trinacria news | 1 commento