Nov 042012
 

Un piccolo epserimento su trasformazioni e animazioni in css3, realizzato per essere testato su chrome (gli altri browser non sono stati presi i considerazione).

La prova riguarda la realizzazione di un piccolo acquario dove alcuni pesci possono nuotare…

La grafica è quella che é, photoshop è uno sconosciuto.

Partiamo dall’html:


<div id=”contenitore”>
<div id=”sx”></div>
<div id=”dx”></div>
<div id=”bottom”></div>
<div id=”top”></div>
<div id=”vasca”></div>
<div id=”corallo”><img src=”images/corallo.gif”></div>
<div id=”corallo2″><img src=”images/corallo2.gif”></div>
<div id=”pesce_01″><img src=”images/pesce-arciere.gif”></div>
<div id=”pesce_02″><img src=”images/pesce-arciere2.gif”></div>
<div id=”pesce_03″><img src=”images/pygoplites-diacanthus.gif”></div>
<div id=”pesce_04″><img src=”images/pygoplites-diacanthus2.gif”></div>
<div id=”pesce_05″><img src=”images/cardinale2.gif”></div>
<div id=”pesce_06″><img src=”images/cardinale.gif”></div>
<div id=”pesce_07″><img src=”images/pesci_tropicali_442.gif”></div>
<div id=”pesce_08″><img src=”images/pesci_tropicali_44.gif”></div>
</div>

Abbiamo la vasca dove nuoteranno i pesci, quattro cerotti ai lati per nascondere il fuori scenza, due coralli per farci nuotare i pesci in mezzo e appunto alcuni pesci,

più saranno più sarà difficile cogliere la ripetitività dei gesti.

La prima parte del css è molto tradizionale, sono praticamente tutti div posizionati in mdo assoluto per costruire lo scenario, lavorando quindi al massimo sullo z-index:


html, body{ margin:0; padding:0;}
#contenitore{ width:960px; height:600px; border:1px solid #000; position:absolute; left:50%; margin-left:-480px;}
#sx{ width:178px; height:600px; background-color:#D0F3FB; position:absolute; left:0; z-index:100;}
#dx{ width:178px; height:600px; background-color:#D0F3FB; position:absolute; right:0; z-index:100;}
#bottom{ width:960px; height:98px; background-color:#D0F3FB; position:absolute; bottom:0; z-index:100;}
#top{ width:960px; height:98px; background-color:#D0F3FB; position:absolute; top:0; z-index:100;}
#corallo{ width:300px; height:200px; position:absolute; bottom:100px; left:160px; z-index:100;}
#corallo2{ width:300px; height:200px; position:absolute; bottom:100px; left:400px; z-index:100;}
#vasca{ width:600px; height:400px; margin:100px auto; background-image:url(images/fondo.jpg); box-shadow:5px 5px 5px 5px #666666; border-radius:5px;}

La parte forse più interessante è costituita dai nostri pesci, ne prenderemo uno come esempio gli altri seguono la stessa linea di sviluppo con parametri diversi,

iniziamo a formattare e posizionare fuori dall vasca il nostro pesciolino:


#pesce_01{ width:60px; height:60px; position:absolute; top:270px; right:50px;}

poi impostiamo l’animazione in 5 step intermedi che sarà il risultato di traslazioni, per attraversare la vasca (e uscire dall’altra parte),

rotazioni e scale per far sembrare il movimento più naturale e non solo lineare:


@-webkit-keyframes ‘animazione_pesce_01′{
from{-webkit-transform:translate(0,0);}
20%{-webkit-transform:translate(-140px,-90px) rotate(10deg) scale(1,1.6);}
40%{-webkit-transform:translate(-280px,-70px) rotate(-1deg);}
60%{-webkit-transform:translate(-420px,-105px) rotate(-10deg) scale(1,1.6);}
80%{-webkit-transform:translate(-560px,-65px) scale(1,1.6);}
to{-webkit-transform:translate(-750px,50px);}
}

Ultimo passo usiamo la nostra animazione che abbiamo impostato:


#pesce_01{
-webkit-animation-name:animazione_pesce_01;
-webkit-animation-duration:20s;
-webkit-animation-delay:5s;
-webkit-animation-iteration-count:infinite;
-webkit-animation-timing-function:ease-in-out;
}

dove associamo l’animazione da usare tramite il nome assegnato, la durata in secondi, il “delay” dal caricamento della pagina

il numero di cicli o se la vogliamo infinita e l’effetto accellerazione

Ripetendo questo lavoro per diversi elementi, semplicemente variando i parametri si pò raggiungere questo risulatato

Sorry, the comment form is closed at this time.