transform

CSS-свойство transform позволяет вам поворачивать, масштабировать, наклонять или сдвигать элемент. Оно модифицирует координатное пространство для CSS визуальной форматируемой модели.

Если свойство имеет значение, отличное от  none, будет создан контекст наложения. В этом случае, элемент будет действовать как содержащий блок для любых элементов position: fixed; или position: absolute; которые он содержит.

Только трансформируемый элемент может быть transform. Т.е. все элементы, шаблоны которых регулируются блочной моделью CSS, кроме : неизменяемые инлайновые блоки, блоки таблица-колонка, и блоки таблица-колонка-группа.

Синтаксис

/* Значения ключевым словом*/
transform: none;

/* Значения функций */
transform: matrix(1.0, 2.0, 3.0, 4.0, 5.0, 6.0);
transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);
transform: perspective(17px);
transform: rotate(0.5turn);
transform: rotate3d(1, 2.0, 3.0, 10deg);
transform: rotateX(10deg);
transform: rotateY(10deg);
transform: rotateZ(10deg);
transform: translate(12px, 50%);
transform: translate3d(12px, 50%, 3em);
transform: translateX(2em);
transform: translateY(3in);
transform: translateZ(2px);
transform: scale(2, 0.5);
transform: scale3d(2.5, 1.2, 0.3);
transform: scaleX(2);
transform: scaleY(0.5);
transform: scaleZ(0.3);
transform: skew(30deg, 20deg);
transform: skewX(30deg);
transform: skewY(1.07rad);

/* Мультифункциональные значения */
transform: translateX(10px) rotate(10deg) translateY(5px);
transform: perspective(500px) translate(10px, 0, 20px) rotateY(3deg);

/* Глобальные значения */
transform: inherit;
transform: initial;
transform: unset;

Свойство transform может быть указано как значение ключевого слова none или как одно или более значений <transform-function>.

Значения

<transform-function>
Одна или более применяемых функций CSS-трансформации. Функции трансформации  умножаются в порядке слева направо, что означает, что составное трансформирование эффективнее применять в порядке справа налево.
none
Указывает, что трансформация не должна применяться.

Формальный синтаксис

none | (en-US) <transform-list>

где
<transform-list> = <transform-function>+ (en-US)

где
<transform-function> = <matrix()> | (en-US) <translate()> | (en-US) <translateX()> | (en-US) <translateY()> | (en-US) <scale()> | (en-US) <scaleX()> | (en-US) <scaleY()> | (en-US) <rotate()> | (en-US) <skew()> | (en-US) <skewX()> | (en-US) <skewY()> | (en-US) <matrix3d()> | (en-US) <translate3d()> | (en-US) <translateZ()> | (en-US) <scale3d()> | (en-US) <scaleZ()> | (en-US) <rotate3d()> | (en-US) <rotateX()> | (en-US) <rotateY()> | (en-US) <rotateZ()> | (en-US) <perspective()>

где
<matrix()> = matrix( <number># (en-US){ (en-US)6} (en-US) )
<translate()> = translate( <length-percentage> , <length-percentage>? (en-US) )
<translateX()> = translateX( <length-percentage> )
<translateY()> = translateY( <length-percentage> )
<scale()> = scale( <number> , <number>? (en-US) )
<scaleX()> = scaleX( <number> )
<scaleY()> = scaleY( <number> )
<rotate()> = rotate( [ (en-US) <angle> | (en-US) <zero> ] (en-US) )
<skew()> = skew( [ (en-US) <angle> | (en-US) <zero> ] (en-US) , [ (en-US) <angle> | (en-US) <zero> ] (en-US)? (en-US) )
<skewX()> = skewX( [ (en-US) <angle> | (en-US) <zero> ] (en-US) )
<skewY()> = skewY( [ (en-US) <angle> | (en-US) <zero> ] (en-US) )
<matrix3d()> = matrix3d( <number># (en-US){ (en-US)16} (en-US) )
<translate3d()> = translate3d( <length-percentage> , <length-percentage> , <length> )
<translateZ()> = translateZ( <length> )
<scale3d()> = scale3d( <number> , <number> , <number> )
<scaleZ()> = scaleZ( <number> )
<rotate3d()> = rotate3d( <number> , <number> , <number> , [ (en-US) <angle> | (en-US) <zero> ] (en-US) )
<rotateX()> = rotateX( [ (en-US) <angle> | (en-US) <zero> ] (en-US) )
<rotateY()> = rotateY( [ (en-US) <angle> | (en-US) <zero> ] (en-US) )
<rotateZ()> = rotateZ( [ (en-US) <angle> | (en-US) <zero> ] (en-US) )
<perspective()> = perspective( <length> )

где
<length-percentage> = <length> | (en-US) <percentage>

Если perspective() (en-US) является одним из мультифункциональных значений, оно должно быть указано первым.

Примеры

HTML

<div>Transformed element</div>

CSS

div {
  border: solid red;
  transform: translate(30px, 20px) rotate(20deg);
  width: 140px;
  height: 60px;
}

Результат

Для того, чтобы посмотреть другие примеры, обратитесь к Использование CSS-трансформации и <transform-function>.

Accessibility concerns

Scaling/zooming анимации являются проблемой для accessibility, поскольку они становятся частым триггером для определённых типов мигрени. Если вам нужно добавить такие анимации на вашем веб-сайте, вы должны предоставить элемент управления, позволяющий пользователям отключать анимации, предпочтительно для всего сайта.

Кроме того, рассмотрите возможность использования @media-опции prefers-reduced-motion — используйте её для написания медиавыражения, которое отключит анимацию, если пользователь уменьшил анимацию в системных настройках.

Узнать больше:

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

Спецификация Статус Комментарий
CSS Transforms Level 2
Определение 'transform' в этой спецификации.
Редакторский черновик Добавлены 3D-функции трансформации.
CSS Transforms Level 1
Определение 'transform' в этой спецификации.
Рабочий черновик Первое определение.

Начальное значениеnone
Применяется ктрансформируемые элементы
Наследуетсянет
Процентыссылается на размер ограничительной рамки
Обработка значениякак указано, но с относительной длиной, конвертируемой в абсолютные длины
Animation typeтрансформация
Создаёт контекст наложенияда

Поддержка браузерами

BCD tables only load in the browser

Смотрите также