CSS
Transformations 2D
Recherche…
Syntaxe
- Rotation Transformer
- transformer: tourner (<angle>)
- Traduire Transformer
- transformer: translate (<longueur ou pourcentage> [, <longueur ou pourcentage>]?)
- transformer: translateX (<longueur ou pourcentage>)
- transformer: translateY (<longueur ou pourcentage>)
- Transformer en biais
- transform: skew (<angle> [, <angle>]?)
- transformer: skewX (<angle>)
- transformer: skewY (<angle>)
- Transformation d'échelle
- transform: scale (<facteur d'échelle> [, <facteur d'échelle>]?)
- transformer: scaleX (<facteur d'échelle>)
- transformer: scaleY (<facteur d'échelle>)
- Transformation de la matrice
- transform: matrix (<nombre> [, <nombre>] {5,5})
Paramètres
Fonction / Paramètre | Détails |
---|---|
rotate(x) | Définit une transformation qui déplace l'élément autour d'un point fixe sur l'axe Z |
translate(x,y) | Déplace la position de l'élément sur les axes X et Y |
translateX(x) | Déplace la position de l'élément sur l'axe X |
translateY(y) | Déplace la position de l'élément sur l'axe Y |
scale(x,y) | Modifie la taille de l'élément sur les axes X et Y |
scaleX(x) | Modifie la taille de l'élément sur l'axe X |
scaleY(y) | Modifie la taille de l'élément sur l'axe Y |
skew(x,y) | Mappage par cisaillement, ou transvection, déformant chaque point d'un élément d'un certain angle dans chaque direction |
skewX(x) | Cartographie horizontale du cisaillement déformant chaque point d'un élément d'un certain angle dans la direction horizontale |
skewY(y) | Cartographie verticale du cisaillement déformant chaque point d'un élément d'un certain angle dans la direction verticale |
matrix() | Définit une transformation 2D sous la forme d'une matrice de transformation. |
angle | L'angle selon lequel l'élément doit être pivoté ou incliné (en fonction de la fonction avec laquelle il est utilisé). L'angle peut être fourni en degrés ( deg ), gradiens ( grad ), radians ( rad ) ou tours ( turn ). Dans la fonction skew() , le deuxième angle est facultatif. S'il n'est pas fourni, il n'y aura pas (0) d'inclinaison dans l'axe Y. |
longueur ou pourcentage | La distance exprimée en longueur ou en pourcentage par laquelle l'élément doit être traduit. Dans la fonction translate() , la deuxième longueur ou pourcentage est facultative. S'il n'est pas fourni, il n'y aurait pas de traduction (0) en ordonnée. |
facteur d'échelle | Un nombre qui définit combien de fois l'élément doit être mis à l'échelle dans l'axe spécifié. Dans la fonction scale() , le deuxième facteur d'échelle est facultatif. S'il n'est pas fourni, le premier facteur d'échelle sera également appliqué pour l'axe Y. |
Remarques
Système de coordonnées 2D
Les transformations sont réalisées selon un système de coordonnées 2D X / Y. L'axe des X va de droite à gauche et l'axe des Y descend vers le bas, comme le montre l'image suivante:
Donc, un translateY()
positif translateY()
descend et un translateX()
positif translateX()
va bien.
Support du navigateur et préfixes
- IE prend en charge cette propriété depuis IE9 avec le préfixe
-ms-
. Les anciennes versions et Edge n'ont pas besoin du préfixe - Firefox le supporte depuis la version 3.5 et nécessite le préfixe
-moz-
jusqu'à la version 15 - Chrome depuis la version 4 et jusqu'à la version 34 nécessite le préfixe
-webkit-
- Safari a besoin du préfixe
-webkit-
jusqu'à la version 8 - Opera a besoin du préfixe
-o-
pour la version 11.5 et du préfixe-webkit-
de la version 15 à 22 - Android a besoin du préfixe
-webkit-
de la version 2.1 à la version 4.4.4
Exemple de transformation préfixée:
-webkit-transform: rotate(45deg);
-ms-transform: rotate(45deg);
transform: rotate(45deg);
Tourner
HTML
<div class="rotate"></div>
CSS
.rotate {
width: 100px;
height: 100px;
background: teal;
transform: rotate(45deg);
}
Cet exemple fera pivoter le div de 45 degrés dans le sens des aiguilles d'une montre. Le centre de rotation se trouve au centre du div, à 50%
de la gauche et à 50%
du haut. Vous pouvez modifier le centre de rotation en définissant la propriété d' transform-origin
.
transform-origin: 100% 50%;
L'exemple ci-dessus définira le centre de rotation au milieu de l'extrémité droite.
Échelle
HTML
<div class="scale"></div>
CSS
.scale {
width: 100px;
height: 100px;
background: teal;
transform: scale(0.5, 1.3);
}
Cet exemple mettra à l'échelle le div sur 100px * 0.5 = 50px
sur l'axe des abscisses et sur 100px * 1.3 = 130px
sur l'axe des 100px * 1.3 = 130px
.
Le centre de la transformation se situe au centre du div, à 50%
de la gauche et à 50%
du haut.
Traduire
HTML
<div class="translate"></div>
CSS
.translate {
width: 100px;
height: 100px;
background: teal;
transform: translate(200px, 50%);
}
Cet exemple déplace le div de 200px sur l'axe des x et de 100px * 50% = 50px
sur l'axe des y.
Vous pouvez également spécifier des traductions sur un seul axe.
Sur l'axe des X:
.translate {
transform: translateX(200px);
}
Sur l'axe des Y:
.translate {
transform: translateY(50%);
}
Fausser
HTML
<div class="skew"></div>
CSS
.skew {
width: 100px;
height: 100px;
background: teal;
transform: skew(20deg, -30deg);
}
Cet exemple incline le div de 20 degrés sur l’axe des X et de - 30 degrés sur l’axe des Y.
Le centre de la transformation se situe au centre du div, à 50%
de la gauche et à 50%
du haut.
Voir le résultat ici .
Transformations multiples
Plusieurs transformations peuvent être appliquées à un élément d'une propriété comme ceci:
transform: rotate(15deg) translateX(200px);
Cela fera pivoter l'élément de 15 degrés dans le sens des aiguilles d'une montre et le traduira ensuite à 200px vers la droite.
Dans les transformations chaînées, le système de coordonnées se déplace avec l'élément . Cela signifie que la traduction ne sera pas horizontale, mais que sur un axe, pivotez de 15 degrés dans le sens des aiguilles d'une montre, comme indiqué dans l'image suivante:
Changer l'ordre des transformations changera la sortie. Le premier exemple sera différent de
transform: translateX(200px) rotate(15deg);
<div class="transform"></div>
.transform {
transform: rotate(15deg) translateX(200px);
}
Comme montré dans cette image:
Transformer l'origine
Les transformations sont effectuées par rapport à un point défini par la propriété transform-origin
.
La propriété prend 2 valeurs: transform-origin: XY;
Dans l'exemple suivant, la première div ( .tl
) est .tl
dans le coin supérieur gauche avec l' transform-origin: 0 0;
et le second ( .tr
) est transformé autour de son coin supérieur droit avec l’ transform-origin: 100% 0
. La rotation est appliquée en vol stationnaire :
HTML:
<div class="transform originl"></div>
<div class="transform origin2"></div>
CSS:
.transform {
display: inline-block;
width: 200px;
height: 100px;
background: teal;
transition: transform 1s;
}
.origin1 {
transform-origin: 0 0;
}
.origin2 {
transform-origin: 100% 0;
}
.transform:hover {
transform: rotate(30deg);
}
La valeur par défaut de la propriété d'origine de transformation est 50% 50%
ce qui correspond au centre de l'élément.