En modifiant l'espace des coordonnées, les transformations CSS permettent de changer la position d'un contenu affecté sans perturber le flux normal. Elles sont implémentées en utilisant un ensemble de propriétés CSS qui vous permettre d'appliquer des transformations affines aux éléments HTML. Ces transformations incluent la rotation, l'inclinaison et la translation à la fois dans le plan ou dans un espace 3D.
Propriétés des transformations CSS
Deux propriétés majeures sont utilisées pour définir les transformations CSS : transform
et transform-origin
.
transform-origin
- Spécifie la position de l'origine. Par défaut, celle-ci est dans le coin supérieur gauche de l'élément et peut être déplacée. Elle est utilisée par de nombreuses transformations, comme les rotations, les homothéties ou l'inclinaison, qui nécessitent un point spécifique pour paramètre.
transform
- Spécifie la transformation à appliquer à l'élément. C'est une liste de transformations séparée par des espaces, qui sont appliquées les unes après les autres, comme requit par l'opération de composition.
Exemples
Voici une version originale du logo MDN :
Rotation
Ici, on place le logo dans une iframe
et on le tourne de 90 degrés depuis le coin inférieur gauche :
<img style="transform: rotate(90deg); transform-origin: bottom left;" src="https://mdn.mozillademos.org/files/12539/Screen%20Shot%202016-02-16%20at%2015.53.54.png">
Distorsion et translation
Ici, on applique une distorsion de 10 degrés et on translate l'image de 150 pixels sur l'axe des abscisses :
<img style="transform: skewx(10deg) translatex(150px); transform-origin: bottom left;" src="https://mdn.mozillademos.org/files/12539/Screen%20Shot%202016-02-16%20at%2015.53.54.png">
Propriétés CSS spécifiques à la 3D
Réaliser des transformations CSS dans l'espace est un petit peu plus complexe. Il faut d'abord définir l'espace 3D en lui donnant une perspective, puis il faut configurer le comportement des éléments 2D dans cet espace.
Définir une perspective
Le premier élément à définir est la perspective. La perspective est ce qui donne l'impression de troisième dimension. Plus les éléments sont loin de l'observateur, plus ils seront petits.
La rapidité avec laquelle ils rétrécissent est définie par la propriété perspective
. Plus la valeur est petite, plus la perspective est profonde.
perspective:0; |
perspective:250px; |
---|---|
1
2
3
4
5
6
|
1
2
3
4
5
6
|
perspective:300px; |
perspective:350px; |
---|---|
1
2
3
4
5
6
|
1
2
3
4
5
6
|
Le second élément à configurer est la position de l'observateur, grâce à la propriété transform-origin
. Par défaut, la perspective est centrée sur l'observateur, ce qui n'est pas toujours idéal.
perspective-origin:150px 150px; |
perspective-origin:50% 50%; |
perspective-origin:-50px -50px; |
---|---|---|
1
2
3
4
5
6
|
1
2
3
4
5
6
|
1
2
3
4
5
6
|
Une fois que vous avez fait cela, vous pouvez travailler sur l'élément dans l'espace 3D.