transform-function
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.
Le type de donnée <transform-function>
représente une fonction qui, lorsqu'elle est appliquée à un élément, permet de modifier sa représentation géométrique. Ces transformations sont généralement exprimées sous forme de matrices et l'image obtenue peut être déterminée en appliquant la matrice de la transformation sur chaque point de l'image. On peut ainsi tourner, redimensionner, distordre. Ce type de donnée est utilisé avec la propriété transform
.
Coordonnées en deux dimensions
Il existe plusieurs modèles de repères géométriques permettant de décrire des transformations. Le repère utilisé le plus communément est le système cartésien.
Le système de coordonnées cartésiennes
Pour le système cartésien, chaque point de l'espace est décrit avec deux valeurs, l'abscisse et l'ordonnée. L'origine du repère (0, 0)
correspond au coin supérieur gauche de l'élément. À la différence des conventions usuelles, l'axe vertical (y) se dirige vers le bas. Chaque point est décrit avec la notation (x,y)
.
Chaque fonction linéaire est décrite avec une matrice 2 x 2 :
L'application d'une transformation consiste à multiplier la matrice de transformation au vecteur de coordonnées (x,y)
:
On peut appliquer plusieurs transformations les unes à la suite des autres :
En utilisant cette notation, on peut décrire et enchaîner (ou composer) la plupart des transformations : des rotations, des homothéties et des distorsions. Les transformations qui sont composées entre elles sont appliquées dans l'ordre, de droite à gauche. Une transformation qui n'est pas linéaire ne pourra pas être représentée par cet outil. Ainsi, l'opération de translation ne pourra pas être représentée par une matrice et devra être gérée à part.
Les coordonnées homogènes de Möbius utilisées en géométrie projective permettent d'obtenir des matrices de transformations 3x3. Bien que plus complexe et moins usitées, celles-ci permettent de représenter les translations car ces dernières correspondent à des fonctions linéaires pour cette algèbre.
Syntaxe
Plusieurs fonctions sont disponibles en CSS pour décrire des transformations. Chacune des fonctions qui suivent applique une opération géométrique, en 2D ou en 3D.
Matrices de transformation
matrix()
-
La fonction
matrix()
permet de définir une matrice de transformation homogène en deux dimensions. Cette matrice contient six coefficients. Les valeurs constantes de ces matrices sont implicites et ne font donc pas partie des paramètres. Les autres paramètres sont décrits dans l'ordre des colonnes.matrix(a, b, c, d, tx, ty)
est une notation raccourcie pourmatrix3d(a, b, 0, 0, c, d, 0, 0, 0, 0, 1, 0, tx, ty, 0, 1)
. matrix3d()
-
La fonction
matrix3d()
permet de définir une transformation en trois dimensions grâce à une matrice homogène 4x4. Les 16 paramètres sont décrits dans l'ordre des colonnes.
Perspective
perspective()
-
La fonction
perspective()
définit la distance entre le plan de coordonnées z=0 et l'œil de l'utilisateur. Cela permet de placer une perspective en trois dimensions sur l'élément. Chaque élément 3D pour lequel z est supérieur à 0 devient plus grand et chaque élément pour lequel z est négatif devient plus petit.
Rotation
rotate()
-
La fonction
rotate()
définit une transformation qui déplace l'élément autour d'un point fixe (défini par la propriététransform-origin
) sans le déformer. La quantité de mouvement est définie par l'angle passé en argument. Si la valeur fournie est positive, le mouvement se fait dans le sens des aiguilles d'une montre (sens horaire) et sinon dans le sens inverse (sens anti-horaire). rotate3d()
-
La fonction
rotate3d()
définit une transformation qui déplace l'élément autour d'un axe donné, sans déformer l'élément. La quantité de mouvement est indiquée par l'angle passé en argument. Si celui-ci est positif, le mouvement se fera dans le sens des aiguilles d'une montre (sens horaire) et s'il est négatif, il se fera dans le sens anti-horaire. Contrairement aux rotations en deux dimensions (rotations planes), la composition des rotations en trois dimensions n'est pas commutative (autrement dit, l'ordre dans lequel elles sont appliquées a toute son importance). rotateX()
-
La fonction
rotateX()
définit une transformation qui déplace un élément autour de l'axe des abscisses sans le déformer. La quantité de mouvement est indiquée par l'angle passé en argument. Si celui-ci est positif, le mouvement se fera dans le sens des aiguilles d'une montre (sens horaire) et s'il est négatif, il se fera dans le sens anti-horaire. L'origine de cette rotation est définie par la propriététransform-origin
.rotateX(a)
est une notation raccourcie pourrotate3D(1, 0, 0, a)
. rotateY()
-
La fonction
rotateY()
définit une transformation qui déplace un élément autour de l'axe des ordonnées sans le déformer. La quantité de mouvement est indiquée par l'angle passé en argument. Si celui-ci est positif, le mouvement se fera dans le sens des aiguilles d'une montre (sens horaire) et s'il est négatif, il se fera dans le sens anti-horaire. L'origine de cette rotation est définie par la propriététransform-origin
.rotateY(a)
est une notation raccourcie pourrotate3D(0, 1, 0, a)
. rotateZ()
-
La fonction
rotateZ()
définit une transformation qui déplace un élément autour de l'axe Z sans le déformer. La quantité de mouvement est indiquée par l'angle passé en argument. Si celui-ci est positif, le mouvement se fera dans le sens des aiguilles d'une montre (sens horaire) et s'il est négatif, il se fera dans le sens anti-horaire. L'origine de cette rotation est définie par la propriététransform-origin
.rotateZ(a)
est une notation raccourcie pourrotate3D(0, 0, 1, a)
.
Changement d'échelle
scale()
-
La fonction
scale()
modifie la taille d'un élément. Elle permet d'appliquer une homothétie définie par un vecteur. Ce vecteur décrit l'amplification ou la réduction de l'élément selon chacun des deux axes plans. Si les deux coordonnées sont égales, l'homothétie sera uniforme et la forme de l'élément sera conservée. - scale3d()
-
La fonction
scale3d()
modifie la taille d'un élément. Elle permet d'appliquer une homothétie définie par un vecteur. Ce vecteur décrit l'amplification ou la réduction de l'élément selon les trois axes. Si les trois coordonnées sont égales, l'homothétie sera uniforme et la forme de l'élément sera conservée. scaleX()
-
La fonction
scaleX()
modifie l'abscisse de chaque point de l'élément en la multipliant par un facteur. Si ce facteur vaut 1, la fonction de transformation correspondra à l'identité. Cette transformation n'est pas isotropique et les angles de l'élément ne sont pas conservés.scaleX(-1)
permet de définir une symétrie axiale qui passe par l'axe vertical de l'origine (définie par la propriététransform-origin
).scaleX(sx)
est une notation raccourcie pourscale(sx, 1)
ou pourscale3d(sx, 1, 1)
. scaleY()
-
La fonction
scaleY()
modifie l'ordonnée de chaque point de l'élément en la multipliant par un facteur. Si ce facteur vaut 1, la fonction de transformation correspondra à l'identité. Cette transformation n'est pas isotropique et les angles de l'élément ne sont pas conservés.scaleY(-1)
permet de définir une symétrie axiale qui passe par l'axe horizontal de l'origine (définie par la propriététransform-origin
).scaleY(sy)
est une notation raccourcie pourscale(1, sy)
ou pourscale3d(1, sy, 1)
. scaleZ()
-
La fonction
scaleZ()
modifie la côte de chaque point de l'élément en la multipliant par un facteur. Si ce facteur vaut 1, la fonction de transformation correspondra à l'identité. Cette transformation n'est pas isotropique et les angles de l'élément ne sont pas conservés.scaleZ(-1)
permet de définir une symétrie axiale qui passe par l'axe Z de l'origine (définie par la propriététransform-origin
).scaleZ(sz)
est une notation raccourcie pourscale3d(1, 1, sz)
.
Distorsions
skew()
-
La fonction
skew()
permet de décrire une distorsion de l'élément où chaque point est tourné d'un angle dans chaque direction. Plus le point est éloigné de l'origine, plus grande sera la transformation appliquée. skewX()
-
La fonction
skewX()
permet de distordre un élément dans la direction horizontale. Le résultat est obtenu en augmentant l'abscisse par une valeur proportionnelle à l'angle et à la distance par rapport à l'origine. Plus le point est éloigné de l'origine, plus grande sera la transformation appliquée. skewY()
-
La fonction
skewY()
permet de distordre un élément dans la direction verticale. Le résultat est obtenu en augmentant l'ordonnée par une valeur proportionnelle à l'angle et à la distance par rapport à l'origine. Plus le point est éloigné de l'origine, plus grande sera la transformation appliquée.
Translations
translate()
-
La fonction
translate()
permet de déplacer un élément sur le plan formé par le document. Cette transformation est caractérisée par un vecteur contenant deux coordonnées dont chacune définit la quantité de déplacement horizontale et verticale. translate3d()
-
La fonction
translate3d()
permet de déplacer un élément dans l'espace en 3D. Cette transformation est caractérisée par un vecteur en 3 dimensions dont les coordonnées définissent les quantités de déplacement respectives aux trois axes. translateX()
-
La fonction
translateX()
permet de déplacer un élément horizontalement dans le plan. Cette transformation est caractérisée par une valeur de type<length>
qui définit la quantité de déplacement horizontal.translateX(tx)
est une notation raccourcie pourtranslate(tx, 0)
. translateY()
-
La fonction
translateY()
permet de déplacer un élément verticalement dans le plan. Cette transformation est caractérisée par une valeur de type<length>
qui définit la quantité de déplacement vertical.translateY(ty)
est une notation raccourcie pourtranslate(0, ty)
. translateZ()
-
La fonction
translateZ()
permet de déplacer un élément sur l'axe z de l'espace en 3D. Cette transformation est caractérisée par une valeur de type<length>
qui définit la quantité de déplacement.translateZ(tz)
est une notation raccourcie pourtranslate3d(0, 0, tz)
.
Spécifications
Specification |
---|
CSS Transforms Module Level 1 # transform-functions |
CSS Transforms Module Level 2 # transform-functions |
Compatibilité des navigateurs
BCD tables only load in the browser
Voir aussi
- La propriété CSS
transform