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

translate3d()

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 translate3d() repositionne un élément dans l'espace 3D. Son résultat est de type <transform-function>.

Exemple interactif

transform: translate3d(0, 0, 0);
transform: translate3d(42px, -62px, -135px);
transform: translate3d(-2.7rem, 0, 1rem);
transform: translate3d(5ch, 0.4in, 5em);
<section class="default-example" id="default-example">
  <div class="transition-all" id="example-element">
    <div class="face front">1</div>
    <div class="face back">2</div>
    <div class="face right">3</div>
    <div class="face left">4</div>
    <div class="face top">5</div>
    <div class="face bottom">6</div>
  </div>
</section>
#default-example {
  background: linear-gradient(skyblue, khaki);
  perspective: 800px;
  perspective-origin: 150% 150%;
}

#example-element {
  width: 100px;
  height: 100px;
  perspective: 550px;
  transform-style: preserve-3d;
}

.face {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
  position: absolute;
  backface-visibility: inherit;
  font-size: 60px;
  color: white;
}

.front {
  background: rgb(90 90 90 / 0.7);
  transform: translateZ(50px);
}

.back {
  background: rgb(0 210 0 / 0.7);
  transform: rotateY(180deg) translateZ(50px);
}

.right {
  background: rgb(210 0 0 / 0.7);
  transform: rotateY(90deg) translateZ(50px);
}

.left {
  background: rgb(0 0 210 / 0.7);
  transform: rotateY(-90deg) translateZ(50px);
}

.top {
  background: rgb(210 210 0 / 0.7);
  transform: rotateX(90deg) translateZ(50px);
}

.bottom {
  background: rgb(210 0 210 / 0.7);
  transform: rotateX(-90deg) translateZ(50px);
}

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

Syntaxe

css
translate3d(tx, ty, tz)

Valeurs

tx

Est une longueur (<length>) ou un pourcentage (<percentage>) représentant l'abscisse (composante horizontale, x) du vecteur de déplacement [tx, ty, tz].

ty

Est une longueur (<length>) ou un pourcentage (<percentage>) représentant l'ordonnée (composante verticale, y) du vecteur de déplacement [tx, ty, tz].

tz

Est une longueur (<length>) représentant la composante z du vecteur de déplacement. Elle ne peut pas être une valeur <percentage> ; dans ce cas, la propriété contenant la transformation est considérée comme invalide [tx, ty, tz].

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.)

Cette transformation s'applique à l'espace 3D et ne peut pas être représentée sur le plan.

Un déplacement n'est pas une transformation linéaire dans ℝ^3 et ne peut pas être représenté par une matrice de coordonnées cartésiennes.
(100tx010ty001tz0001)\left( \begin{array}{cccc} 1 & 0 & 0 & tx \\ 0 & 1 & 0 & ty \\ 0 & 0 & 1 & tz \\ 0 & 0 & 0 & 1 \end{array} \right)

Syntaxe formelle

<translate3d()> = 
translate3d( <length-percentage> , <length-percentage> , <length> )

<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 à : perspective(500px) translateX(10px) */
  transform: perspective(500px) translate3d(10px, 0, 0px);
  background-color: pink;
}

Résultat

Combiner un déplacement sur l'axe z 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: perspective(500px) translate3d(10px, 0, 100px);
  background-color: pink;
}

Résultat

Spécifications

Specification
CSS Transforms Module Level 2
# funcdef-translate3d

Compatibilité des navigateurs

Voir aussi