CSS  »  Articoli  »  Effetti con CSS 

Animazioni CSS3 complesse con Alice.js

di: Marco Trotta     05 Novembre 2011

Alice.js è una micro libreria JavaScript realizzata da Laurent Hasson e Jim Ing per la produzione di effetti visivi di impatto, risulta molto utile specie nella realizzazione di interfacce utente ricche di interazione.

Alice.js permette di compilare codice CSS per creare rapidamente animazioni CSS3 complesse, inoltre supporta l'accelerazione hardware nei moderni browser. Il progetto viene distribuito sotto licenza Apache 2.0 e, a differenza di quanto accade per prodotti simili, non è dipendente da alcuna libreria esterna ma fondata esclusivamente su file Javascript in un'unica cartella, senza immagini, CSS o altre dipendenze.

La libreria è stata progettata in modo estremamente modulare, per poterla utilizzare occorre includere il core ed i singoli moduli dedicati ai vari effetti. Alice.js non è legata alla gestione degli eventi (touch o mouse), n´ cerca di imporre una logica particolare o elementi di layout.

Grazie a queste caratteristiche è possibile integrarla in altre librerie, come ad esempio per animare un componente Dojo o jQuery, lavorando semplicemente sul rendering del componente applicando ad esso uno stile.

Nota: Alice.js al momento supporta solamente browser basati su Web Kit (es. Chrome e Safari)

Un esempio pratico: effetto 'Wobble'

<div id="DIV1">Esempio 1</div>
<img id="IMG1" src="/myimg.gif">

<script src="/alice/alice.core.js"></script> // include il core della libreria
<script src="/alice/alice.wobble.js"></script> // include lo script per l'animazione

/* Applica lo stile wobble */
<script>
    alice.wobble(["DIV1", "IMG1"], 20, 5, "top-left", 1000, 10, "ease-in-out", -1);
</script>

Abbiamo utilizzato l'effetto Wobble su un div e un'immagine, senza modificare il markup del layout, semplicemente lanciando la funzione wobble con i parametri:

ParametroDescrizione
["DIV1", "IMG1"]Array JSON di oggetti a cui apporre l'animazione
"20"L'angolo di rotazione in gradi
"5"Valore di casualità (in percentuale) della rotazione (in realtà, la rotazione sarà tra 19 e 21 (circa il 5%)
"top-left"anchor point dell'animazione (consentiti: "top-left", "top-center", "top-right", "center" oppure direttamente le coordinate x, y)
"1000"Durata effetto animazione in millisecondi
"10"Valore di casualità (in percentuale) applicato alla durata (in realtà, la durata sarà tra 900 e 1100 (circa il 10%)
"ease-in-out"funzione di andamento dell'animazione (in rapporto standard specifiche CSS)
"-1"Il numero di iterazioni, (-1 per infinito)

Bounce

L'effetto "bounce" simula il rimbalzo di un oggetto sullo schermo visto dall'alto, creando anche un'ombra di rilievo

alice.bounce({ id: "my_image" // oggetto a cui applicare l'effetto 
             }); 

Toss

L'effetto "toss" simula il movimento del lancio di un frisbee. Tra le proprietà possiamo impostare la durata, il numero di iterazioni e la direzione di ritorno:

alice.toss({ id: "my_image",
             duration: 2000, 
			 iteration: 'infinite'
		   });

Spring

L'animazione "spring" mostra l'effetto elasticità di una molla in caduta, rimbalzando sullo schermo come una pallina. È possibile agire sulla configurazione di questo effetto per impostare un numero maggiore o minore di elasticità regolando il numero di rimbalzi:

alice.spring({ id: "my_image",
               width: 96,
			   height: 96,
			   drop_height: 190, // altezza della caduta 
			   elasticity: 0.56, // valore elasticità
			   iteration: 'infinite'
			 });

Fade

L'effetto "fade" crea un effetto di dissolvenza sull'elemento specifico. Il valore della proprietà duration determina il tempo impiegato dall'oggetto nell'abbandonare la visuale:

alice.fade2({ id: "my_fade", 
              duration: 3.0,
			  iteration: 'infinite'
			});

Rotate

L'effetto "rotate" esegue la rotazione di un div cui applicato. Impostando il valore di alcuni parametri è possibile simulare il movimento di un pendolo:

alice.rotate("my_image", "45", 
             {
			   origin: "50% 0%",
			   timing: 1000,
			   iteration: 'infinite',
			   direction: 'alternate', // direzione effetto
			   easing: 'cubic-bezier(0.33333,0.6667,0.66667,1)' //valori rimbalzo 
			 });

Altri effetti

Molte altre sofisticate animazioni sono ancora in fase di sviluppo ma vale la pena elencare le più significative:

AnimazioneDescrizione
carouselpermette di visualizzare un numero da 2 a 30 div su pannelli adiacenti, sino a formare un poligono in prospettiva, creando una image-gallery di forte impatto visivo
cubecon i div selezionati crea un cubo che può essere ruotato al click del mouse o da tastiera
page flipsimula l'effetto di sfogliare le pagine di un libro
foldeffetto fisarmonica
flipvisualizza una successione di immagini in sequenza

Conclusioni

Alice.js è un progetto in forte crescita, supportato da un team di esperti che ha realizzato un lavoro degno di nota. Creare sofisticate animazioni senza implementare logiche già esistenti, permette di integrare questa libreria in qualsiasi progetto.

Link utili

Guide CSS

Responsive Desing, la guida

Progettare siti da fruire su dispositivi diversi è imprescindibile...

Guida CSS3

Scoprire e usare al meglio tutte le novità dell'ultima versione dei...

Guida CSS Tecniche essenziali

Testo, immagini, layout, form, liste, tabelle: soluzioni pronte per...

Altre guide

Newsletter @CSS

Ogni mercoledì, direttamente nella tua e-mail: guide, articoli, tutorial, FAQ e approfondimenti tecnici su CSS e Web Design.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Corso Webmaster base

18 Giugno 2012 a Milano
Disponibilità: 6 Posti

Corso Google AdWords Base

25 Giugno 2012 a Milano
Disponibilità: 7 Posti

Corso Google AdWords Base

05 Giugno 2012 a Roma
Disponibilità: 7 Posti

Corso Webmaster base

11 Giugno 2012 a Roma
Disponibilità: 7 Posti