Raccolta effetti di Transizione Css3


9 maggio 2011 19 Commenti css, css3

Una delle novità più importanti di css3 che riescono a farci desiderare questo linguaggio sono gli effetti di transizione.

Già ne avevo parlato, ma oggi voglio approfondire l’argomento raccogliendo tutte quelle transizioni di forma, colore e movimento che, se ben accoppiate, riescono a creare qualcosa di spettacolare.

1) Transizione di Rotazione elementi

Poniamo il caso volessimo far ruotare attorno ad un asse un determinato elemento html con i css3 il codice da utilizzare sarebbe il seguente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
div {
width: 100px;
height: 100px;
background: #cc0000;
transition: all 2s ease-in-out;
-moz-transition: all 2s ease-in-out;
-webkit-transition: all 2s ease-in-out;
-o-transition: all 2s ease-in-out;
}


div:hover {
transform:rotate(720deg) scale(2,2);
-moz-transform:rotate(720deg) scale(2,2);
-webkit-transform:rotate(720deg) scale(2,2);
-o-transform:rotate(720deg) scale(2,2);
}

Come avete visto quando il mouse va sopra il div esso gira, mentre appena il div perde il suo stato hover ( il mouse non è più sopra ) fa il giro inverso ritornando al suo stato originale.

Demo

2) Creare effetto elastico su elementi html

Altra chicca che ci regala css è quella di poter donare agli elementi che cambiano dimensioni un effetto elastico. Questo esempio vale per l’effetto di transizione di forma:

Demo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
@-webkit-keyframes resize {
0% {
width: 100px;
height: 100px;
}
96% {
width: 204px;
height: 204px;
}
100% {
widht: 200px;
height: 200px;
}
}

div {
width: 100px;
height: 100px;
background: #cc0000;
}

div:hover {
width: 200px;
height: 200px;
-webkit-animation-name: resize;
-webkit-animation-duration: 1s;
-webkit-animation-timing-function: ease-in-out;
-webkit-animation-iteration-count: 4;
}

Quest’altro effetto invece è applicato per la transizione di movimento:

Demo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@-webkit-keyframes moviment {
0% {
margin-left: 0px;
}
100% {
margin-left: 100px;
}
}

div {
width: 100px;
height: 100px;
background: #cc0000;
}

div:hover {
-webkit-animation-name: moviment;
-webkit-animation-duration: 1s;
-webkit-animation-iteration-count: 4;
-webkit-animation-direction: alternate;
}

Questo effetto rende molto di più su Safari.

3) Opacità in transizione

Se dovessi dare il mio verdetto sull’effetto di transizione di css3 da me preferito, la mia scelta ricadrebbe sulle opacità. Se volessimo dare un effetto di transizione a un elemento dovremmo scrivere il seguente codice:

Demo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
div {
width: 100px;
height: 100px;
background: #cc0000;
margin: 0px auto;
transition: opacity 1s ease-in-out;
-moz-transition: opacity 1s ease-in-out;
-webkit-transition: opacity 1s ease-in-out;
-o-transition: opacity 1s ease-in-out;
-ms-transition: opacity 1s ease-in-out;
}

div:hover {
opacity: 0;
}

4) Transizione di effetti css3

Attraverso le transizioni possiamo pure influire sui nuovi effetti di css3 come border-radius per gli angoli arrotondati oppure box-shadow per l’ombra sugli elementi html.

Qua trovate un esempio per border-radius:

Demo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
div {
width: 100px;
height: 100px;
background: #cc0000;
border-radius: 0px;
transition: all 1s ease;
-moz-transition: all 1s ease;
-webkit-transition: all 1s ease;
-o-transition: all 1s ease;
-ms-transition: all 1s ease;
}

div:hover {
border-radius: 100px;
}

Qua trovate un esempio per box-shadow:

Demo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
div {
width: 100px;
height: 100px;
background: #cc0000;
-moz-box-shadow: 5px 5px 10px #000;
-webkit-box-shadow: 5px 5px 10px #000;
box-shadow: 5px 5px 10px #000;
transition: all 1s ease;
-moz-transition: all 1s ease;
-webkit-transition: all 1s ease;
-o-transition: all 1s ease;
-ms-transition: all 1s ease;
}

div:hover {
-moz-box-shadow: 10px 10px 20px #000;
-webkit-box-shadow: 10px 10px 20px #000;
box-shadow: 10px 10px 20px #000;
}

Come si crea un effetto del genere?

Per creare un effetto del genere in realtà non serve neanche tanto. Basta conoscere le proprietà fondamentali di css3 per la transizione.

- transition-property questa proprietà serve a indicare quale dovrà cambiare valore;
- transition-duration questa proprietà indica la durata della transizione, espresso in secondi;
- animation-iteration-count questa indica il numero di volte che la transizione deve avvenire;
- animation-name indica il nome dell’animazione nel caso di keyframe per browser webkit;
- animation-direction indica la direzione dell’animazione nel caso di movimento.

Ultima nozione, che è da conoscere, è il funzionamento di un’animazione con keyframe. Praticamente attraverso delle impostazioni particolari è possibile gestire l’animazione in ogni suo momento utilizzando le percentuali:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@-webkit-keyframes resize {
0% {
width: 100px;
height: 100px;
}
96% {
width: 204px;
height: 204px;
}
100% {
widht: 200px;
height: 200px;
}
}

Vi è piaciuto l’articolo? Commentatelo o condividetelo con i vostri contatti ;)




Potresti trovare interessante anche

1151 foto_gallery_css3_html5 Realizziamo una semplice Gallery Fullscreen con i Css3 slideshow_css3
Pubblicato in css, css3 |



Iscriviti alla newsletter

Vuoi ricevere ogni articolo che pubblico direttamente sulla tua mail ? Vuoi evitare di perdere qualsiasi articolo pubblico ? Registrati alla mia newsletter in un click.

Inserisci il tuo indirizzo mail:

19 commenti per Raccolta effetti di Transizione Css3

Ottimo complimenti Rocco ;)

belli, sopratutto “transizione di rotazione elementi”.
sono rimasto contento nel constatare che firefox si sta dando da fare per integrare questi effetti

Fico!!!!! su IE 8 non va xo :(

@Zaso per fortuna con FF4 ha migliorato di molto il supporto :D

@Michele e si i browser di casa Microsoft scarseggiano con il supporto di Css3 :(

@Michele ti ricordo che stai parlando di microsoft =P
 
comunque bravo Rocco, ottimo articolo =)

@Francesco grazie mille

Non vi dimenticate di condividere :D

Grande Rocco, ottimo cm sempre! -A-

Belli!
Ma è normale che su FF4 il secondo e terzo esempio non mi funzionano?

@Gabriele Malaspina su ff4 gli effetti con la funzione keyframe non funzionano , perché sono al momento supportati da browser con motore webkit cioè solo safari e chrome :(

Cmq al più presto Mozilla ha detto che amplierà tale funzione visto che sta per arrivare anche per questa la Last Call

IE8 e le versioni precedenti faranno pure schifo, ma IE9 supporta questi effetti.
Comunque, volevo segnalarti che il secondo effetto ( elastico ) non funziona su firefox, perché nei css hai definito le proprietà solo con il prefisso “-webkit-”…

@io ciao e da un sacco che non ci leggevamo , tutto a posto ?

Comunque mi dispiace deluderti ma il secondo effetto non si vede su firefox perché la regola keyframe non è ancora supportata dai motori mozilla e in più se provi a mettere il prefisso -moz- a posta del -webkit- non succede nulla.

Provare per credere , per il resto sono contento che tu abbia commentato quest’articolo :D

Ciao Rocco,
non avevo mai visto utilizzare i css3 in questo modo, a tal proposito vorrei mostrarti l’applicazione del box shadow “in movimento” che ho testato su un menu di un sito che sto preparando.
Complimenti davvero, mi hai dato degli spunti meravigliosi.

Perdonami, mi sono dimenticato di scrivere il link: http://www.mimelaine.altervista.org

@mirko complimenti un effetto molto carino che usa solo css3 :)

Grazie Rocco,
ti rispondo qui visto che ho deciso di utilizzare solo css3 per il menu (nell’altro post in cui mi hai risposto cercavo uno script che mi permettesse di animare il menu più o meno così. prima di applicare i css3 infatti c’era solo un effetto in cui appariva il sottomenu con l’hover tramite css2).
L’unica cosa che non riesco a fare è far apparire il sottomenu con un effetto ease verticale (height). Ho fatto molte prove, probabilmente è colpa della struttura stessa del menu, ma proprio non riesco a venirne a capo. Puoi aiutarmi?

@mirko io lo vedo con tale effetto …. prova ad aggiornare il browser :) e a svuotare le cache

Forse mi sono spiegato male…
il sottomenu appare in effetti, ma vorrei che le voci apparissero una alla volta, in pratica vorrei che si allungasse verso il basso pian piano.

@mirko mi sa che per questo dovrai usare o jquery oppure le animazioni di css3 che funzionano però soltanto su webkit :(

Lascia un Commento