Vous pouvez me contacter via Facebook pour questions & suggestions :
Page Facebook relative à mon site
Rien n'interdit qu'une transition porte sur une transformation.
C'est ce que je fais dans cette page : transformations 2D avec transition.
Survolez successivement sur chaque image et observez ...
Attention il s'agit d'une transition qui dure 5 secondes ; le curseur doit rester sur l'image ce laps de temps.
Dès que vous survolez une image dans la colonne de gauche, elle monte et diminue de taille (de moitié)
Dès que vous survolez une image dans la colonne du centre, elle tourne sur la droite, le point de rotation est l'angle haut gauche.
Dès que vous survolez une image dans la colonne de droite, elle descend et sa taille double.
Deux classes sont associées à chaque image.
Messieurs, vous vous êtes "rincé l'oeil". Maintenant il faut bosser un peu. Vous devez compléter la feuille de style correspondante.
img.petit {display : inline-block ; margin : 1% ; width :30%;
vertical-align : top ; transition : transform 5s; }
img.gauche:hover {transform : translateY(-200px) scale(.5); }
img.centre:hover {transform : rotate(45deg) ; transform-origin : top left; }
img.droite:hover {transform : translateY(200px) scale(2);}
Cliquez successivement sur chaque image et observez ...
Attention il s'agit d'une transition qui dure 5 secondes, ne cessez pas de cliquer le temps imparti.
Vous devez compléter la feuille de style correspondante.
img.carte {display : ... ;
margin : 1% ; width :30%;
vertical-align : top ;
... : transform 5s; }
#carte1:active {transform : ... ; }
#carte2:active {transform : ... ;}
#carte3:active {transform : ... ; }
#carte4:active {transform : ... ; }
La propriété transform argumentée avec la commande scale() permet de créer un effet zoom sur survol ou clic.
img {width : 30%; vertical-align : top ;
margin : 1%; transition : transform 3s;}
img:hover{transform : scale(2); }
Via un script une nouvelle classe s'applique à la collection d'images.
img {display : inline-block ; margin : 1% ;
width : 18%; height : 150px ; object-fit: contain; ;
border : 1px solid red; }
.transformer
{transform : translateY(200px) scale(2); transition : transform 5s; }
Observez la règle de style qui s'applique aux images ! Toutes les images doivent être affichées dans une zone de 18% par 150px avec
un bordurage rouge.
Or elles n'ont pas toutes le même ratio largeur/hauteur. Il faut donc utiliser la propriété object-fit pour qu'il n'y ait
pas déformation de l'image. Si la valeur de cette propriété vaut "contain" il n'y aura pas rognage mais l'image n'occupera pas
forcément la zone d'affichage qui lui est dédiée.
Notez la classe "transformer" qui prévoit une transformation 2D avec transition.
...
function ftransformer()
{
for (var i in document.images)
{
document.images[i].classList.toggle("transformer");
}
} // fin fonction
...
Notez bien que les images ont toutes la même hauteur mais pas la même largeur (bandes blanches à gauche et à droite plus ou moins larges).
Elles ne sont pas rognées ; ce qui aurait êté le cas éventuellement avec object-fit : cover