Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

translate()

Baseline Widely available

Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis ⁨juillet 2015⁩.

La fonction CSS translate() repositionne un élément dans les directions horizontale et/ou verticale. Son résultat est de type <transform-function>.

Exemple interactif

transform: translate(0);
transform: translate(42px, 18px);
transform: translate(-2.1rem, -2ex);
transform: translate(3ch, 3mm);
<section id="default-example">
  <img
    class="transition-all"
    id="static-element"
    src="/shared-assets/images/examples/firefox-logo.svg"
    width="200" />
  <img
    class="transition-all"
    id="example-element"
    src="/shared-assets/images/examples/firefox-logo.svg"
    width="200" />
</section>
#static-element {
  opacity: 0.4;
  position: absolute;
}

#example-element {
  position: absolute;
}

Cette transformation est caractérisée par un vecteur bidimensionnel [tx, ty]. Ses coordonnées définissent de combien l'élément se déplace dans chaque direction.

Syntaxe

css
/* Valeurs simples <length-percentage> */
transform: translate(200px);
transform: translate(50%);

/* Valeurs doubles <length-percentage> */
transform: translate(100px, 200px);
transform: translate(100px, 50%);
transform: translate(30%, 200px);
transform: translate(30%, 50%);

Valeurs

Valeur simple <length-percentage>

Cette valeur est une longueur (<length>) ou un pourcentage <percentage> représentant l'abscisse (composante horizontale, x) du vecteur de déplacement [tx, 0]. L'ordonnée (composante verticale, y) du vecteur de déplacement sera fixée à 0. Par exemple, translate(2px) est équivalent à translate(2px, 0). Une valeur en pourcentage fait référence à la largeur de la boîte de référence définie par la propriété transform-box.

Valeur double <length-percentage>

Cette valeur décrit deux longueurs (<length>) ou pourcentages <percentage> représentant à la fois l'abscisse (x) et l'ordonnée (y) du vecteur de déplacement [tx, ty]. Un pourcentage en première position fait référence à la largeur, en seconde à la hauteur de la boîte de référence définie par la propriété transform-box.

Coordonnées cartésiennes sur ℝ^2 (angl.) Coordonnées homogènes sur ℝℙ^2 Coordonnées cartésiennes sur ℝ^3 (angl.) Coordonnées homogènes sur ℝℙ^3 (angl.)

Une translation n'est pas une transformation linéaire dans ℝ^2 et ne peut pas être représentée par une matrice de coordonnées cartésiennes.

(10tx01ty001)\left( \begin{array}{ccc} 1 & 0 & tx \\ 0 & 1 & ty \\ 0 & 0 & 1 \end{array} \right)
(10tx01ty001)\left( \begin{array}{ccc} 1 & 0 & tx \\ 0 & 1 & ty \\ 0 & 0 & 1 \end{array} \right)
(100tx010ty00100001)\left( \begin{array}{cccc} 1 & 0 & 0 & tx \\ 0 & 1 & 0 & ty \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{array} \right)
[1 0 0 1 tx ty]

Syntaxe formelle

<translate()> = 
translate( <length-percentage> , <length-percentage>? )

<length-percentage> =
<length> |
<percentage>

Exemples

Utiliser un déplacement sur un seul axe

HTML

html
<div>Statique</div>
<div class="moved">Déplacé</div>
<div>Statique</div>

CSS

css
div {
  width: 60px;
  height: 60px;
  background-color: skyblue;
}

.moved {
  /* Équivaut à : translateX(10px) ou translate(10px, 0) */
  transform: translate(10px);
  background-color: pink;
}

Résultat

Combiner un déplacement sur l'axe y et l'axe x

HTML

html
<div>Statique</div>
<div class="moved">Déplacé</div>
<div>Statique</div>

CSS

css
div {
  width: 60px;
  height: 60px;
  background-color: skyblue;
}

.moved {
  transform: translate(10px, 10px);
  background-color: pink;
}

Résultat

Spécifications

Specification
CSS Transforms Module Level 1
# funcdef-transform-translate

Compatibilité des navigateurs

Voir aussi