Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :
Sujets que vous pourriez aussi aimer :Transformations animées en CSS
Dans ce nouveau volet sur les 
astuces CSS, nous allons découvrir comment opérer des 
transformations animées sur des formes géométriques.

Dans l'exemple illustré par la capture, nous agissons sur trois 
formes géométriques identiques et parfaitement 
carrées au départ. Au survol de la souris sur chacune d'entre elles, elles se transforment progressivement et respectivement en un rond, en un rectangle et en une cloche. Et pour cela, le 
CSS n'a pas besoin du 
Javascript pour agir.
Base de travail
Pour réaliser ces 
effets d'animation, nous proposons de débuter l'étude à partir d'une base déjà structurée.
Comme nous en avons l'habitude désormais, le fichier de la 
page Web (index.htm) est accompagné de ses ressources dans les sous dossiers.
- Double cliquer sur le fichier index.htm pour l'ouvrir dans le navigateur par défaut,
Nous retrouvons bien les trois carrés disposés côte à côte. Si vous les survolez, le curseur de la souris change d'aspect mais les formes ne subissent aucune 
déformation. C'est tout l'enjeu de cette 
astuce.
- A la racine du dossier de décompression, cliquer droit sur ce fichier index.htm,
- Dans le menu contextuel, choisir de l'ouvrir avec un éditeur comme le Notepad++,
Nous accédons ainsi au 
code Html de la 
page Web. Dans l'entête tout d'abord, vous notez la référence à deux 
feuilles de styles :
...
<meta http-equiv='Content-Type' content='text/html;charset=UTF-8' />
<link rel='stylesheet' href='css/mes-styles.css'>
<link rel='stylesheet' href='css/les-styles.css'>
<body>
...
La première se nomme 
mes-styles.css. C'est elle qui organise la structure globale de la page. La seconde se nomme 
les-styles.css. Elle est déjà dotée de quelques attributs. C'est elle que nous devons implémenter pour produire ces 
transformations animées. Comme l'indiquent les chemins relatifs, ces feuilles sont stockées dans le 
sous dossier local css.
Les 
formes géométriques se trouvent plus bas dans le code, plus précisément contenues dans le calque (Div) d'identifiant 
auCentre. Ces trois formes sont-elles mêmes générées par des calques.
...
<div id='conteneur'>
<div id='contenu' style='text-align:center;'>
<div id='auCentre'>
<!--
Implémentation
-->
<div id='cercle' class='carre'>
Le carré devient rond !
</div>
<div id='rectangle' class='carre'>
Le carré devient rectangle !
</div>
<div id='cloche' class='carre'>
Le carré devient une cloche !
</div>
</div>
</div>
</div>
...
L'
astuce irrésistible est d'avoir attribué une 
classe commune pour les trois premiers 
Div. Il s'agit de la 
classe carre. Ainsi, tous les réglages communs y sont opérés pour donner vie à ces carrés. Et dans le même temps, chacun de ces 
calques est reconnu par un identifiant (id) explicitement différent. Ces ID doivent être exploités pour définir l'état d'arrivée de chacune des formes après 
transformation.
- A la racine du dossier de décompression, double cliquer sur le sous dossier css,
- Dès lors, cliquer droit sur le fichier les-styles.css,
- Dans le menu contextuel, choisir de l'ouvrir avec un éditeur comme le Notepad ++,
Nous y trouvons effectivement le style commun aux trois formes :
.carre
{
width:100px;
height:100px;
padding:80px;
color:#fff;
font-size:24px;
float:left;
margin:15px;
background-color:#2b579a;
border:5px solid #a13638;
cursor:pointer;
}
Nous y trouvons des 
réglages CSS usuels, notamment sur les dimensions, les couleurs et la police.
Animer les transformations
Avant de coder l'état d'arrivée de chacune des formes dans son style spécifique, nous devons ajouter un dernier réglage commun. Il consiste à définir quels sont les attributs concernés par la 
transformation et sur quelle durée l'
animation doit se jouer. Nous l'avons déjà découvert à l'occasion des précédentes astuces, nous devons exploiter l'
attribut Css transition.
- A la fin du style carre, ajouter l'instruction CSS suivante :
.carre
{
width:100px;
height:100px;
padding:80px;
color:#fff;
font-size:24px;
float:left;
margin:15px;
background-color:#2b579a;
border:5px solid #a13638;
cursor:pointer;
transition: all 2s;
}
Nous fournissons deux paramètres à l'
attribut transition. Le premier, 
all, indique que toutes les propriétés sont concernées, qu'il s'agisse de la hauteur, de la police, des dimensions etc... Le second indique que la 
transformation doit se dérouler progressivement sur deux secondes. Mais pour que cette transformation ait lieu, encore faut-il que nous définissions l'état d'arrivée, au survol de la souris.
- A la suite du code CSS, créer le premier style suivant :
#cercle:hover
{
border-radius:50%;
}
Le premier des carrées est reconnu par l'
identifiant cercle. Avec l'
attribut hover, nous définissons les propriétés qu'il doit adopter lorsque la souris le survole. En réglant l'
attribut border-radius à 50%, nous arrondissons de moitié tous ses angles. En d'autres termes, d'un 
carré nous obtenons un 
cercle.
- Enregistrer les modifications (CTRL + S),
- Revenir sur le navigateur Web,
- Rafraîchir la page avec le raccourci clavier CTRL + F5,
Ce raccourci permet d'actualiser le cache du navigateur dans lequel sont stockés et mémorisés entre autres les 
styles CSS.
- Passer la souris sur le premier des trois carrés,
 
Comme vous pouvez le voir, sur un délai de deux secondes, le 
carré se métamorphose en 
cercle. Et si vous déplacez la souris en dehors de la forme, le carré se recompose en sens inverse, toujours sur une durée de deux secondes.
- Revenir dans l'éditeur Notepad ++ sur le fichier les-styles.css,
- Créer cette fois le style suivant :
#rectangle:hover
{
height:60px;
}
C'est le deuxième des trois calques qui est reconnu par l'
identifiant rectangle. En rabotant sa hauteur à 60px au lieu de 100, nous le transformons en un rectangle au survol de la souris (hover). Vous pouvez le constater en enregistrant les modifications (CTRL + S), en rafraîchissant la page Web (CTRL + F5) et en passant la souris au-dessus de la deuxième forme géométrique.
- Dans le fichier les-styles.css, ajouter le dernier style suivant :
#cloche:hover
{
border-radius:50% 50% 15% 15%;
}
Nous ciblons donc le dernier calque d'
identifiant cloche, soit le dernier 
carré. Nous exploitons de nouveau l'
attribut border-radius mais cette fois avec quatre paramètres. C'est ainsi que nous définissons l'arrondi des autres angles. Tout d'abord, nous réglons les deux angles supérieurs à 50% pour un arrondi parfait. Puis, nous réglons les deux angles inférieurs à 15% pour un aspect incurvé plus sobre. C'est de cette manière que nous rendons l'illusion d'une cloche.

Après avoir enregistré les 
styles et après avoir rafraîchi le cache du navigateur, vous pouvez apprécier la 
transformation animée du dernier carré au survol de la souris.