CSS-свойство `translate`
Базовая поддержка Широко доступно
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и в разных версиях браузеров. Она доступна во всех браузерах с августа 2022 года.
Свойство translate CSS позволяет задавать преобразования перемещения отдельно и независимо от свойства transform. Это лучше соответствует типичным сценариям использования пользовательского интерфейса и избавляет от необходимости запоминать точный порядок функций преобразования при задании значения transform.
Попробуйте
translate: none;
translate: 40px;
translate: 50% -40%;
translate: 20px 4rem;
translate: 20px 4rem 150px;
<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);
}
Синтаксис
/* Keyword values */ translate: none; /* Single values */ translate: 100px; translate: 50%; /* Two values */ translate: 100px 200px; translate: 50% 105px; /* Three values */ translate: 50% 105px 5rem; /* Global values */ translate: inherit; translate: initial; translate: revert; translate: revert-layer; translate: unset;
Значения
- Одно значение
<length-percentage> - Значение типа
<length>или<percentage>, задающее перемещение вдоль оси X. Эквивалентно функцииtranslate()(двумерное перемещение) с одним указанным значением. - Два значения
<length-percentage> - Два значения типа
<length>или<percentage>, задающие значения перемещения по осям X и Y (соответственно) для двумерного перемещения. Эквивалентно функцииtranslate()(двумерное перемещение) с двумя указанными значениями. - Три значения
- Два значения
<length-percentage>и одно значение<length>, задающие значения перемещения по осям X, Y и Z (соответственно) для трёхмерного перемещения. Эквивалентно функцииtranslate3d()(трёхмерное перемещение). -
none - Указывает, что перемещение не должно применяться.
Формальное определение
| Исходное значение | none |
|---|---|
| Применяется к | преобразуемым элементам |
| Наследуется | нет |
| Проценты | относительно размера ограничивающего блока |
| Вычисленное значение | как задано, но относительные единицы длины преобразованы в абсолютные |
| Тип анимации | преобразование |
Формальный синтаксис
translate = none | <length-percentage> [ <length-percentage> <length>? ]? <length-percentage> = <length> | <percentage>
Примеры
Перемещение элемента при наведении
В этом примере показано, как использовать свойство translate для перемещения элемента по трём осям. Первый блок перемещается вдоль оси X, а второй — по осям X и Y. Третий блок перемещается по осям X, Y и Z и выглядит так, словно движется к зрителю, благодаря свойству perspective, добавленному родительскому элементу.
HTML
<div class="wrapper"> <div id="box1">translate X</div> <div id="box2">translate X,Y</div> <div id="box3">translate X,Y,Z</div> </div>
CSS
.wrapper {
perspective: 100px;
display: inline-flex;
gap: 1em;
}
.wrapper > div {
width: 7em;
line-height: 7em;
text-align: center;
transition: 0.5s ease-in-out;
border: 3px dotted;
}
#box1:hover {
translate: 20px;
}
#box2:hover {
translate: 20px 20px;
}
#box3:hover {
translate: 5px 5px 30px;
}
Результат
Спецификации
Совместимость с браузерами
| Компьютеры | Мобильные устройства | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome для Android | Firefox для Android | Opera для Android | Safari на iOS | Samsung Internet | WebView для Android | WebView на iOS | |
translate |
104 |
104 |
72 |
90 |
14.1 |
104 |
79 |
71 |
14.5 |
20.0 |
104 |
14.5 |
none |
104 |
104 |
72 |
90 |
14.1 |
104 |
79 |
71 |
14.5 |
20.0 |
104 |
14.5 |
См. также
Примечание: skew не является самостоятельным значением преобразования
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/translate