Spec-Zone.ru › CSS

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;
}

Результат

Спецификации

Спецификация
Модуль преобразований CSS, уровень 2
# individual-transforms

Совместимость с браузерами

Компьютеры Мобильные устройства
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

См. также

  • scale
  • rotate
  • transform

Примечание: 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API