Transformations

Les transformations servent à modifier la forme et la position d’un élément HTML: étirer, faire tourner, etc. Les transformations ne changent pas le flow du document, autrement dit les éléments autour ignorent les transformations.
On utilise généralement les transformations avec la propriété transition afin de créer des animations fluides (simples).

transform

Définit la ou les transformations à appliquer [CSS3]

Définition:

transform: <transform-function>

Exemple:

{
  transition: transform 3s;
}
{
  transition: all 2s ease;
  &:hover {
    transform: rotateY(360deg);
  }
}

JSFiddle transformations 2D & 3D

Multiples transformations:

Pour appliquer plusieurs transformations, les lister séparées par un espace.
L’ordre des transformations est important, chaque transformation est calculée par dessus la somme des transformations précédentes. JSfiddle ordre transformations

{
  transform: scale(2,1) rotate(60deg);
}

transform-function 2D:

Fonction Description
translate(X, Y) Déplace l’élément horizontalement et verticalement
translateX(<length> | <percentage>) Déplace l’élément horizontalement
Les pourcentages sont calculés relativement à l'objet en courslui-même et non à son parent : translateX(100%) déplace l'élément à côté de l'endroit où il était (= déplacement de 100% de sa largeur)
translateY(<length> | <percentage>) Déplace l’élément verticalement
scale(X, Y) Redimensionne l’élément en largeur et en hauteur
scaleX(<number>) Redimensionne l’élément en largeur
scaleY(<number>) Redimensionne l’élément en hauteur
rotate(<angle>) Fait tourner l’élément autour d’un point fixe
skew(<angle>,<angle>) Étire l’élément sur la largeur et sur la hauteur
skewX(<angle>) Étire l’élément sur la largeur
skewY(<angle>) Étire l’élément sur la hauteur
matrix(a1,a2,b1,b2,tx,ty) Définit une matrice de transformation 2D
Les transformations rotate, skew, etc sont des raccourcis pour les matrices de transformation usuellement utilisées.

Outils pour créer sa matrice : Via drag & drop ou via slider
Convertir des transformations en matrice

transform-function 3D:

Les transformations 3D héritent des transformations 2D et ajoutent un troisième axe: Z, qui permet de déplacer les éléments dans l’espace, comme des cartes postales ou des facettes de cube. Exemples de transformations 3D

Fonction Description
perspective(<length>) Pour utiliser une transformation 3D, il faut spécifier la perspective. Elle définit la distance de vision par rapport à l'élément : plus la distance donnée est petite, plus l'objet est déformé. Elle se définit
  • soit via la propriété CSS perpective: 500px
  • soit via la fonction de transformation transform: perspective(500px)
translate3d(X, Y, Z) Même principe que translate mais avec l’axe Z en plus
translateZ(<length>) Déplace l’élément vers l’avant ou l’arrière
scale3d(X, Y, Z) Même principe que scale mais avec l’axe Z en plus
scaleZ(<number>) Modifie la coordonnée en Z de chaque point de l’élément
rotate3d(X, Y, Z, <angle>) Fait tourner l’élément autour d’un axe
rotateZ(<angle>) Déplace l’élément autour de l’axe Z
matrix3d(a1,a2,a3,a4, b1,b2,b3,b4,
c1,c2,c3,c4, tx,ty,tz,d4)
Définit une matrice de transformation 3D
Même principe que matrix mais avec l'axe Z
{
  transform: rotate3d(0,1,0,60deg);
}

transform-origin

Définit l’origine du repère pour les opérations de transformation [CSS3]

transform-origin: (<length> | <percentage> | left | center | right | top | bottom){1,2}

Par défaut se situe

Exemples transform-origin
Codepen Animation transform-origin


transform-box

transform-box: border-box | fill-box | view-box
(CSS3)
Définit la boîte de référence utilisée par transform et transform-origin
Uniquement pour les éléments SVG
- border-box : bordure incluse
- fill-box   : contenu uniquement
- view-box   : utilise la viewBox la plus proche

transform-style

Définit si les enfants de l’élément doivent être considérés comme étant en 3d ou non [CSS3]

transform-style: flat | preserve-3d

perspective

Définit la distance de vision par rapport à l’élément (perspective) [CSS3]

perspective: <length>

perspective-origin

Définit la position du point de fuite [CSS3]

perspective-origin: <length> | <percentage> | left | center | right | top | bottom

Par défaut se situe au milieu (50% 50%)


backface-visibility

Définit si la face arrière de l’élément est visible ou non [CSS3]

backface-visiblity: visible | hidden

Exemple backface-visiblity avec cube