The translate() CSS function repositions an element in the horizontal and/or vertical directions. Its result is a <transform-function> data type.
translate()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Try it
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;
}
This transformation is characterized by a two-dimensional vector [tx, ty]. Its coordinates define how much the element moves in each direction.
Syntax
/* Single <length-percentage> values */ transform: translate(200px); transform: translate(50%); /* Double <length-percentage> values */ transform: translate(100px, 200px); transform: translate(100px, 50%); transform: translate(30%, 200px); transform: translate(30%, 50%);
Values
- Single
<length-percentage>values -
This value is a
<length>or<percentage>representing the abscissa (horizontal, x-component) of the translating vector [tx, 0]. The ordinate (vertical, y-component) of the translating vector will be set to0. For example,translate(2px)is equivalent totranslate(2px, 0). A percentage value refers to the width of the reference box defined by thetransform-boxproperty. - Double
<length-percentage>values -
This value describes two
<length>or<percentage>values representing both the abscissa (horizontal, x-component) and the ordinate (vertical, y-component) of the translating vector [tx, ty]. A percentage as first value refers to the width, as second part to the height of the reference box defined by thetransform-boxproperty.
| Cartesian coordinates on ℝ^2 | Homogeneous coordinates on ℝℙ^2 | Cartesian coordinates on ℝ^3 | Homogeneous coordinates on ℝℙ^3 |
|---|---|---|---|
| A translation is not a linear transformation in ℝ^2 and can't be represented using a Cartesian-coordinate matrix. | | | |
[1 0 0 1 tx ty] |
Formal syntax
<translate()> =
translate( <length-percentage> , <length-percentage>? )
<length-percentage> =
<length> |
<percentage>
Examples
Using a single-axis translation
HTML
<div>Static</div> <div class="moved">Moved</div> <div>Static</div>
CSS
div {
width: 60px;
height: 60px;
background-color: skyblue;
}
.moved {
/* Equal to: translateX(10px) or translate(10px, 0) */
transform: translate(10px);
background-color: pink;
}
Result
Combining y-axis and x-axis translation
HTML
<div>Static</div> <div class="moved">Moved</div> <div>Static</div>
CSS
div {
width: 60px;
height: 60px;
background-color: skyblue;
}
.moved {
transform: translate(10px, 10px);
background-color: pink;
}
Result
Specifications
Browser compatibility
| Desktop | Mobile | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | |
translate |
1 | 12 | 3.5 | 10.5 | 3.1 | 18 | 4 | 11 | 3.2 | 1.0 | 2 |
See also
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/translate