Vous pouvez me contacter via Facebook pour questions & suggestions :
Page Facebook relative à mon site
Il y a transition lorsque pour un élément HTML donné une ou plusieurs propriétés changent de valeurs (sur survol ou clic)
non pas instantanément mais sur une certaine durée.
Pendant longtemps pour réaliser une transition il fallait recourir à JavaScript et en particulier à la libraire jQuery.
Désormais c'est possible via le CSS.
Survolez les images puis les boutons puis les boîte roses et observez ...
img.sexy{opacity : 0.2 ; width : 15% ;
transition-property : opacity, width ;
transition-duration : 2s ; }
img.sexy:hover {opacity : 1 ; width : 30% ;}
button {display: block; background : skyblue ;
transition-property : all ;
transition-duration : 3s; }
button:hover {color : red ; font-size : 2em;
box-shadow : 5px 5px 5px grey ; }
.box {border-width: 1px solid red; display: block;
width: 100px; height: 100px;
background-color: blue; color : white; }
.box:hover {background-color: red; color : black ;
width: 200px; height: 200px;
transform: rotate(360deg);
transition: width 3s, height 3s, background-color 3s, transform 3s;}
Transition sur les image : initialement les images sont quasi transparentes et petites.
L'image survolé devient totalement opaque et sa taille double.
La transition porte donc sur deux propriétés.
Dans le cadre de la transition sur les boutons la propriété transition-property a pour valeur all ce qui évite d'écrire :
transition-property : background, color, box-shadow, font-size ; .
En effet la valeur all veut dire toutes les propriétés CSS citées dans la deuxième règle de style (celle avec le déclencheur de transition).
Dans le cadre de la transition sur la boite "box", j'utilise le raccourci "transition" avec un liste de paire "propriété durée" ; chaque paire séparée par une virgule. Notez que le raccourci "transition" est écrite dans la deuxième règle de style.
Dans l'exemple précédent nous avons évoqué la méga propriété transition avec deux paramètres (propriétés concernées par la transition puis la durée de la transition).
Or le raccourci transition peut comprendre jusqu'à 4 paramètres OU il existe quatre propriétés préfixés "transition-".
Survolez successivement les différentes images, le curseur doit rester au moins 5 secondes
Les images sont identifiées respectivement premiere, deuxieme, troisieme.
#premiere{opacity : 0.2 ; width : 15% ;}
#premiere:hover {width : 45% ; opacity : 1 ;
transition : all 5s ease-in 500ms; }
#deuxieme{opacity : 0.2 ; width : 15% ; }
#deuxieme:hover {width : 45% ; opacity : 1 ;
transition : opacity 5s linear 500ms ; }
#troisieme{opacity : 0.2 ; width : 15% ; }
#troisieme:hover {width : 45% ; opacity : 1 ;
transition : all 5s steps(4,start) 500ms ; }
J'utilise systématiquement le raccourci "transition".
Pour les trois images la transition dure 5secondes.
Pour la première et troisième images la transition porte sur les propriétés width et opacity
Pour la deuxième image la transition ne porte que sur la propriété opacity. Donc l'agrandisseme de taille est instantané !
Pour la première image la transition sera lente au début et rapide à la fin (ease-in).
Pour la deuxième image la vitesse de transition sera constante (linear).
Pour la troisième image la transition est saccadée : par sauts (steps).
Pour les trois images la transition démarre 1 demi seconde après le chargement de la page (quatrième paramètre = 500ms).
Seuls les deux premiers paramètres sont obligatoires.
Par défaut le troisième paramètre vaut "ease" et le quatrième vaut 0s. Respectez l'ordre !
A la place du raccourci transition vous pouvez utiliser quatre propriétés préfixées "transition-" :
transition-property, transition-duration, transition-timing-function, transition-delay.
<>Vous verrez plus loin les animations CSS ; pour définir le rythme de l'animation vous utiliserez les mêmes termes.
Par le passé il fallait utiliser javaScript.
En combinant transformations et transitions CSS on peut faire l'économie d'un script JS !
Le CSS :
section {position : relative; margin : 0 0 ; }
section figure {position : relative ; margin : 30px 0 ; width : 10%; transition : all 3s;}
section figure img{width : 90%;}
section figure figcaption {text-align : center; font-size : 1.2em;}
section figure:active {transform : scale(3) ; position : absolute ; left : 30% ; top : 100px; }
Le code HTML :
Les boites figure sont par défaut positionnées à gauche avec une taille très réduite.
Sur clic, la figure sélectionnée est positionnée en absolue avec un changement d'échelle de 3.
Cliquez successivement sur chaque miniature !
Surtout maintenez le clic durant au moins 3 secondes (durée de la transition).
Quand vous entendez "effet fondu" vous pensez utiliser jQuery et ses méthodes "fade".
Or dans l'exemple ci-dessous l'effet fondu est produit sans utiliser ce framework mais en combinant JS et CSS3.
Le CSS :
img {width : 18%; vertical-align : top ;}
.effacer{opacity : 0; width : 0% ; transition : all 5s; }
Le code HTML :
Le script :
...
document.querySelector("button").onclick = function()
{
for (var i in document.images)
{
document.images[i].classList.toggle("effacer");
}
} // fin fonction
...
Notez la classe nommée "effacer" définissant une transition de 5 s sur deux propriétés.
La fonction anonyme ajoute / retire la classe "effacer" à toutes les images de la page.
J'ai en effet utilisé la méthode toggle() de l'objet classList qui ajoute ou retire (si elle existe déjà) la classe précitée.
Sachez que vous trouverez dans mon site un tuto sur JavaScript pour débutants : Tuto JavaScript
En combinant JS natif et CSS3, on obtient une solution alternative à jQuery en matière d'effets visuels.