English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Функция 3D-преобразования CSS3 позволяет преобразовывать элементы в трёхмерном пространстве.
Использование функции 3D-преобразования CSS3 позволяет выполнять базовые преобразования элементов в трёхмерном пространстве, такие как перемещение, вращение, масштабирование и наклон.
Элементы, прошедшие преобразование, не влияют на окружающие элементы, но могут быть перетянуты, как элементы с абсолютной позиционировкой. Однако, преобразованные элементы все еще занимают место в макете в своем исходном положении (не преобразованные).
Атрибут transform CSS3 использует функции трансформации для манипулирования координатной системой элемента, чтобы применить эффект трансформации.
Следующие части описывают функции 3D-трансформаций:
Функция rotation3d() вращает элемент в 3D-пространстве вокруг вектора направленности [x, y, z] с точки круга на указанный угол. Это можно записать как rotate(vx, vy, vz, angle).
.container { width: 125px; height: 125px; perspective: 500px; border: 4px solid #e5a043; background: #fff2dd; } .transformed { -webkit-transform: translate3d(25px, 25px, 50px); /* Chrome, Safari, Opera */ transform: translate3d(25px, 25px, 50px); }Проверьте, посмотрите‹/›
Функция translate3d(25px, 25px, 50px) перемещает изображение в положительном направлении по осям X и Y на 25 пикселей и в положительном направлении по оси Z на 50 пикселей.
3D-трансформации используют трёхмерную координатную систему, но движение по направлению Z не всегда заметно, так как эти элементы существуют в двумерной плоскости (плане) и не имеют глубины.
Используя CSS-атрибуты perspective и perspective-origin, можно добавить глубину сцене, делая элементы, находящиеся на Z-оси выше (т.е. ближе к наблюдателю), выглядеть больше, а элементы, удалённые от наблюдателя, – меньше.
Примечание:Если к элементу применяются 3D-трансформации, но не устанавливается перспективная проекция, результат не будет отображаться как трёхмерный эффект.
Функция rotate3d() вращает элемент в 3D-пространстве вокруг вектора направленности [x, y, z] на указанный угол. Она может быть записана как rotate(vx, vy, vz, angle).
.container{ width: 125px; height: 125px; perspective: 300px; border: 4px solid #a2b058; background: #f0f5d8; } .transformed { -webkit-transform: rotate3d(0, 1, 0, 60deg); /* Chrome, Safari, Opera */ transform: rotate3d(0, 1, 0, 60deg); }Проверьте, посмотрите‹/›
Функция rotate3d(0, 1, 0, 60deg) вращает изображение вокруг оси Y на 60 градусов. Вы также можете использовать отрицательные значения для вращения элемента в противоположном направлении.
Функция scale3d() изменяет размер элемента. Она может быть записана как scale(sx, sy, sz). В отсутствие сочетания с другими функциями трансформации, такими как вращение и透视, эффект этой функции не слишком заметен, как показано в следующем примере.
.container{ width: 125px; height: 125px; perspective: 300px; border: 4px solid #6486ab; background: #e9eef3; } .transformed { -webkit-transform: scale3d(1, 1, 2) rotate3d(1, 0, 0, 60deg); /* Chrome, Safari, Opera */ transform: scale3d(1, 1, 2) rotate3d(1, 0, 0, 60deg); }Проверьте, посмотрите‹/›
Функция scale3d(1, 1, 2) масштабирует элемент по оси Z, функция rotate3d(1, 0, 0, 60deg) вращает изображение на 60 градусов по оси X.
Функция matrix3d() может выполнять все 3D-преобразования за один раз, например, трансляцию, вращение и масштабирование. Она использует 4x4 преобразовательМатрицаФорма 16 параметров.
Это пример выполнения 3D-преобразований с использованием функции matrix3d().
.container{ width: 125px; height: 125px; perspective: 300px; border: 4px solid #d14e46; background: #fddddb; } .transformed { -webkit-transform: matrix3d(0.359127, -0.469472, 0.806613, 0, 0.190951, 0.882948, 0.428884, 0, -0.913545, 0, 0.406737, 0, 0, 0, 0, 1); /* Chrome, Safari, Opera */ transform: matrix3d(0.359127, -0.469472, 0.806613, 0, 0.190951, 0.882948, 0.428884, 0, -0.913545, 0, 0.406737, 0, 0, 0, 0, 1); }Проверьте, посмотрите‹/›
Однако, при выполнении нескольких преобразований за один раз, удобнее использовать одну функцию преобразования и перечислять их по порядку, как показано ниже:
.container{ width: 125px; height: 125px; perspective: 300px; border: 4px solid #a2b058; background: #f0f5d8; } .transformed { -webkit-transform: translate3d(0, 0, 60px) rotate3d(0, 1, 0, -60deg) scale3d(1, 1, 2); /* Chrome, Safari, Opera */ transform: translate3d(0, 0, 60px) rotate3d(0, 1, 0, -60deg) scale3d(1, 1, 2); }Проверьте, посмотрите‹/›
В таблице ниже кратко описаны все функции 3D-трансформации.
Функция | Описание |
---|---|
translate3d(tx,ty,tz) | Перемещает элемент на заданное количество по осям X, Y и Z. |
translateX(tx) | Перемещает элемент на заданное количество по оси X. |
translateY(ty) | Перемещает элемент на заданное количество по оси Y. |
translateZ(tz) | Перемещает элемент на заданное количество по оси Z. |
rotate3d(x,y,z, a) | Вращает элемент вокруг вектора направления [x, y, z] на заданный угол, указанный в последнем параметре. |
rotateX(a) | Вращает элемент вокруг оси X на заданный угол. |
rotateY(a) | Вращает элемент вокруг оси Y на заданный угол. |
rotateZ(a) | Вращает элемент вокруг оси Z на заданный угол. |
scale3d(sx,sy,sz) | Масштабирует элемент по осям X, Y и Z на заданные значения. Функция scale3d(1,1,1) неактивна. |
scaleX(sx) | Масштабирует элемент по оси X. |
scaleY(sy) | Масштабирует элемент по оси Y. |
scaleZ(sz) | Масштабирует элемент по оси Z. |
matrix(n,n,n,n,n,n, n,n,n,n,n,n,n,n,n,n) | Указывает 3D-трансформацию в виде 4x4 матрицы из 16 значений. |
perspective(длина) | Определяет перспективу для элементов 3D-трансформации. Обычно, с увеличением значения этой функции, элемент появляется дальше от наблюдателя. |