Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :
Sujets que vous pourriez aussi aimer : 
Transitions multiples avec les styles Css 
Au travers des précédentes astuces, nous avons appris à réaliser des 
transformations  et à 
jouer des animations  avec les 
styles Css . Dans ce nouveau volet, nous allons apprendre à réaliser des 
effets  plus complexes. Pourtant et nous le verrons, la mise en oeuvre est encore plus simple.
Dans l'exemple illustré par la capture, la photo se transforme totalement au survol de la souris. Ses dimensions d'origine sont assez petites et sa bordure est jaune. Dans sa position finale, elle est plus grande, elle est dotée d'une bordure bleue plus épaisse, ses angles sont totalement arrondis. Et cette 
transformation  se joue sur un délai de 2 secondes. Bref, nous allons comprendre comment il est possible de métamorphoser toutes ces propriétés à la fois avec les 
effets de transitions en Css .
Structure de la page Html 
Pour démontrer cette nouvelle astuce, nous devons récupérer des sources offrant une structure Html déjà avancée.
La décompression livre le fichier principal de la page Web. Il est nommé 
index.htm . Trois sous dossiers l'accompagnent. Nous reviendrons sur l'un d'entre eux en temps voulu.
A la racine du dossier de décompression, double cliquer sur le fichier index.htm , 
De cette manière, vous l'ouvrez dans le navigateur Web déclaré par défaut. La 
page Html  propose un bouton et une image en son centre. Pour l'instant le bouton est inopérant. Si vous survolez l'image avec la souris, vous constatez qu'elle change complètement d'apparence. Toutes les propriétés que nous avons énumérées précédemment ont été transformées. Cela signifie que des 
styles Css  régissent déjà son comportement. Mais cette 
transformation  est brutale. Aucune 
transition  n'a lieu. La métamorphose est instantanée. Et c'est tout l'enjeu de cette nouvelle découverte. Nous allons comprendre comment il est possible de maîtriser l'évolution d'une 
animation  avec les 
styles Css .
Effet de transition 
Avant de connaître la technique triviale permettant de maîtriser ces 
effets de transformation , nous devons nous emparer de la structure de la page Web.
A la racine du dossier de décompression, cliquer droit sur le fichier index.htm , 
Dans le menu contextuel, choisir de l'ouvrir avec un éditeur comme le Notepad++, 
Nous affichons ainsi la structure et le code de la page Html. Les références aux 
styles Css  sont établies en entête de cette page :
<link rel='stylesheet' href='css/mes-styles.css'> 
Le 
fichier mes-styles.css  est celui qui organise globalement la structure actuelle. Le 
fichier les-styles.css  est celui que nous allons utiliser en complément pour régler ces 
effets de transition .
Plus bas dans le 
code Html , vous notez la présence du 
bouton  et juste en-dessous, celle de l'
image  dans sa 
balise img .
...<input type='button' class='btnMenu' value='Transition' /><br />  
Cette image est régie par le 
style limg  (id='limg'). C'est lui qui décide de l'apparence de la 
photo  au début et à la fin de la 
transformation . Pour le constater, nous devons accéder à ce fichier de 
styles .
A la racine du dossier de décompression, double cliquer sur le dossier Css  pour l'ouvrir, 
Cliquer alors avec le bouton droit de la souris sur le fichier les-styles.css , 
Dans le menu contextuel, choisir de l'ouvrir avec un éditeur comme le Notepad++, 
Trois styles sont déjà présents. Seuls les deux derniers nous intéressent puisqu'ils concernent le comportement de la photo :
#limg 
Il s'agit du 
style limg  et de son 
style dérivé limg:hover . Le premier définit tous les attributs de l'image au départ comme sa largeur, sa hauteur et sa bordure générée par la combinaison du 
background-color  et du 
padding . Le second définit les attributs de cette image après qu'elle ait été survolée par la souris, en témoigne son 
gestionnaire d'événement  (hover) en suffixe. Et le moins que l'on puisse dire est que ses propriétés sont largement bouleversées. Ses dimensions sont augmentées, la couleur de fond pour la bordure est modifiée, la dimension du décalage (padding) pour l'épaisseur de bordure est augmentée, un effet d'arrondi est appliqué (border-radius) et une ombre portée (box-shadow) est ajoutée. Mais comme nous avons pu le voir, en l'état la transformation est instantanée. Or nous souhaitons que cet effet se décompose dans le temps, sur 2 secondes par exemple. Pour cela, nous allons devoir gérer cet 
effet de transition  par les 
attributs Css .
Avant l'accolade fermante du style limg , ajouter l'instruction Css  suivante : #limgtransition:all 2s;  
C'est l'
attribut transition  qui dicte comment doit s'opérer la transformation des propriétés entre le premier et le second 
style , au survol de la souris. Le 
paramètre all  indique que toutes les propriétés listées sont concernées par la 
transformation . Nous pourrions aussi nous contenter d'en énumérer seulement certaines. Le deuxième paramètre est fixé à 2s. Il précise que la 
transition  doit s'opérer sur une durée de 2 secondes.
Enregistrer les modifications (CTRL + S), 
Revenir sur le navigateur Web, 
Rafraichir la page avec le raccourci CTRL + F5 pour actualiser le cache, 
Puis, survoler l'image à l'aide de la souris, 
Comme vous pouvez le voir, cette fois la 
transformation  prend le temps de se jouer pour rejoindre les attributs fixés par le 
style limg:hover . Et précisément, dans ce dernier 
style , vous pouvez modifier certaines valeurs de propriétés comme les dimensions, l'ombre ou la couleurde bordure pour constater que l'
effet de transformation  réagit parfaitement lorsque vous réactualisez la page. De même, dans le premier 
style , vous pouvez modifier le temps pour jouer plus ou moins rapidement l'
animation .
Gérer la transition en Javascript 
Nous allons le voir, il est tout à fait possible de définir ces 
attributs de transition  a posteriori par le 
code Javascript . L'intérêt pourrait par exemple consister à déclencher l'
animation  non plus au survol mais au clic de la souris. Ici, le principe est de considérer une image à transformer sans 
effet de transition . Mais un clic sur le bouton situé juste au-dessus doit lui appliquer ces valeurs. Dès lors la 
transformation  doit respecter la 
transition . Au travers de cette technique, nous pourrions donc construire des listes déroulantes permettant à l'utilisateur de choisir des paramètres dynamiques pour les appliquer et déclencher des 
animations  différentes au gré des envies.
Revenir dans l'éditeur Notepad++ sur le fichier les-styles.css , 
Supprimer la ligne de la transition (transition:all 2s) dans le style limg , 
Puis, enregistrer les modifications (CTRL + S), 
Désormais, si vous rafraîchissez la page Web et que vous survolez l'image, vous retrouvez l'état d'origine. La 
transformation  est instantanée, sans aucune temporisation.
Revenir sur l'éditeur Notepad++ dans le code de la page index.htm cette fois, 
Dans la section de script  en bas de cette dernière, ajouter le code Javascript  suivant : <script type='text/javascript' language='javascript'> 
Très simplement, nous créons la 
fonction jouerTransition . Grâce à la 
méthode getElementById  de l'
objet document , nous pointons sur l'image reconnue par son identifiant : limg. Nous accédons à ses attributs de style grâce à la 
propriété style . Dès lors, nous exploitons la 
propriété dérivée transition  pour paramétrer de nouveau l'
effet de transformation  selon les mêmes réglages que précédemment.
Mais pour être jouée, une 
fonction  doit être appelée. C'est la vocation du bouton situé au-dessus de l'image dans le 
code Html .
Plus haut dans le code, ajouter le gestionnaire d'événement  suivant au bouton  : ...onclick='jouerTransition()' /><br /> 
Il parle de lui-même. Au clic sur le bouton, la 
fonction jouerTransition  doit être appelée.
Enregistrer les modifications et basculer sur le navigateur Web, 
Rafraîchir la page avec le raccourci clavier CTRL + F5 , 
Au survol de l'image, rien n'a changé pour l'instant. La transition est brusque.
Cliquer sur le bouton  et survoler de nouveau l'image, 
Comme vous pouvez le voir, les 
paramètres de transition  lui ont été conférés dynamiquement par le 
code Javascript . La 
transformation  se déroule de nouveau sur une durée de 2 secondes pour toutes les propriétés concernées.